diff --git a/libIRDB/include/core/variantid.hpp b/libIRDB/include/core/variantid.hpp
index 9e7285fab718b435c6c3ca3b4b1636ca06be0ff5..f9536cf41028f1a0ffd2abd07a5baeacef067662 100644
--- a/libIRDB/include/core/variantid.hpp
+++ b/libIRDB/include/core/variantid.hpp
@@ -29,7 +29,8 @@ class VariantID_t : public BaseObj_t
 {
     public:
         VariantID_t();        		// create a Variant ID not in the database 
-        VariantID_t(db_id_t pid);       // read from the DB 
+        VariantID_t(db_id_t pid);       // read from the DB
+	~VariantID_t();     // Deletes the File_t objects -- beware dangling File_t* in FileIR_t objects!  
 
         bool IsRegistered();               
         bool Register();    // accesses DB
diff --git a/libIRDB/src/core/variantid.cpp b/libIRDB/src/core/variantid.cpp
index 4daf529f1cc4d7e87a08322aceef47c9250a4014..1de34b5f1275a0a1340d28d586af4533326aad69 100644
--- a/libIRDB/src/core/variantid.cpp
+++ b/libIRDB/src/core/variantid.cpp
@@ -38,6 +38,19 @@ VariantID_t::VariantID_t() :
 }
 
 
+VariantID_t::~VariantID_t()
+{
+	for(std::set<File_t*>::iterator 
+		it = files.begin();
+		it != files.end();
+		++it
+	   )	
+	{
+		delete *it;
+	}
+}
+
+
 void VariantID_t::CreateTables()
 {
 	// note:  this tables are now part of File_t.