Add bccReadFile, bccLinkFile.
diff --git a/lib/bcc/Script.h b/lib/bcc/Script.h
index a8f8c4e..dc115da 100644
--- a/lib/bcc/Script.h
+++ b/lib/bcc/Script.h
@@ -31,6 +31,7 @@
 namespace bcc {
   class ScriptCompiled;
   class ScriptCached;
+  class SourceInfo;
 
   namespace ScriptStatus {
     enum StatusType {
@@ -59,18 +60,11 @@
 
     bool mIsContextSlotNotAvail;
 
-    // ReadBC
-    char const *sourceBC;
-    char const *sourceResName;
-    unsigned char sourceSHA1[20];
-    size_t sourceSize;
-
-    // ReadModule
-    llvm::Module *sourceModule;
-
-    // LinkBC
-    char const *libraryBC;
-    size_t librarySize;
+    // Source List
+    SourceInfo *mSourceList[2];
+    // Note: mSourceList[0] (main source)
+    // Note: mSourceList[1] (library source)
+    // TODO(logan): Generalize this, use vector or SmallVector instead!
 
     // Register Symbol Lookup Function
     BCCSymbolLookupFn mpExtSymbolLookupFn;
@@ -79,27 +73,28 @@
   public:
     Script() : mErrorCode(BCC_NO_ERROR), mStatus(ScriptStatus::Unknown),
                mCachePath(NULL), mIsContextSlotNotAvail(false),
-               sourceBC(NULL), sourceResName(NULL), sourceSize(0),
-               sourceModule(NULL), libraryBC(NULL), librarySize(0),
                mpExtSymbolLookupFn(NULL), mpExtSymbolLookupFnContext(NULL) {
       Compiler::GlobalInitialization();
+
+      mSourceList[0] = NULL;
+      mSourceList[1] = NULL;
     }
 
     ~Script();
 
-    int readBC(char const *resName,
-               const char *bitcode,
-               size_t bitcodeSize,
-               unsigned long flags);
+    int addSourceBC(size_t idx,
+                    char const *resName,
+                    const char *bitcode,
+                    size_t bitcodeSize,
+                    unsigned long flags);
 
-    int readModule(char const *resName,
-                   llvm::Module *module,
-                   unsigned long flags);
+    int addSourceModule(size_t idx,
+                        llvm::Module *module,
+                        unsigned long flags);
 
-    int linkBC(char const *resName,
-               const char *bitcode,
-               size_t bitcodeSize,
-               unsigned long flags);
+    int addSourceFile(size_t idx,
+                      char const *path,
+                      unsigned long flags);
 
     int prepareExecutable(char const *cachePath, unsigned long flags);