diff --git a/libIRDB/include/util/IR_Files.hpp b/libIRDB/include/util/IR_Files.hpp
index 79668eb005362a8e08516fbdb74d078ff5e0df32..346826f09a4f298393660d7489f3ae1dc9e0dafb 100644
--- a/libIRDB/include/util/IR_Files.hpp
+++ b/libIRDB/include/util/IR_Files.hpp
@@ -1,35 +1,45 @@
 #ifndef IR_Files_h
 #define IR_Files_h
 
+// TODO: This should really use unordered maps and sets,
+//       but I was having trouble building with those.
 #include <map>
 #include <utility>
 #include <memory>
-#include <iterator>
+#include <set>
 
+// If our toolchain use paradigm changes, this class can be extended
+// to support adding, removing, writing back, and getting individual file IRs
+// in a variant (may require adding more maps).
+
+// *** A toolchain step should NOT delete pointers to any variant, file IR, or file object stored
+//     in a IRFiles_t object. I have made pointers shared where possible to communicate this. ***
 class IRFiles_t
 {
 	public:
 		IRFiles_t() {};
 		~IRFiles_t();
 
-		// add/remove file IRs (have option to write back to DB upon removal)
-		// If choosing to write back to DB, may throw a database error exception.
-		// If the write back fails, the FileIR will not be destroyed.
-		void AddFileIR(FileIR_t&);
-		void RemoveFileIR(FileIR_t&, bool);
-		void RemoveFileIR(File_t&, bool);
-	
-		// has file IR?
-		bool HasFileIR(File_t&);
-		bool HasFileIR(FileIR_t&);
+		// Add/remove file IRs.
+		// Adding file IRs also adds the variant the files belong to.
+		// Removing file IRs also removes the variant the files belong to.
+		// When removing file IRs, have the option to write back to the DB.
+		int  AddFileIRs(db_id_t variant_id);
+		int  RemoveFileIRs(db_id_t variant_id, bool write_to_DB);
+			
+		// get a variant
+		std::shared_ptr<VariantID_t> GetVariant(db_id_t variant_id);
+		// get file IRs (returns a shared ptr to a set of shared ptrs to file IRs)
+		std::shared_ptr<std::set<std::shared_ptr<FileIR_t>>> GetFileIRs(db_id_t variant_id);
 
-		// get file IR
-		FileIR_t* GetFileIR(File_t&);
+		// Write back all variants and file IRs stored in this IRFiles_t object.
+		int WriteBackAll(void);
 		
 	private:
-		// map for speed of finding if a needed file
-		// has already been read from the DB
-		std::map<File_t*, std::shared_ptr<FileIR_t>> file_IR_map;	
+		// maps for speed of finding needed file IRs and/or variants
+		// that have already been read from the DB
+		std::map<db_id_t, std::shared_ptr<VariantID_t>> variant_map;
+		std::map<db_id_t, std::shared_ptr<std::set<std::shared_ptr<FileIR_t>>>> file_IRs_map;	
 
 };