diff --git a/synthesis/fetch.py b/synthesis/fetch.py
index aad1e45d61345368055e8c8ce73961e28e2e3c1e..b27368bf35ab96f9484cdfd197790857a09f65d2 100644
--- a/synthesis/fetch.py
+++ b/synthesis/fetch.py
@@ -71,6 +71,7 @@ class ModuleFetcher:
         os.chdir(cur_dir)
 
         module.isfetched = True
+        module.revision = rev
         module.path = os.path.join(fetchto, basename)
         return rval
 
@@ -113,6 +114,7 @@ class ModuleFetcher:
 
         os.chdir(cur_dir)
         module.isfetched = True
+        module.revision = rev
         module.path = os.path.join(fetchto, basename)
         return rval
 
@@ -132,11 +134,12 @@ class ModuleFetcher:
             ret = (url_match.group(1), None)
         return ret
 
-class ModulePool:
+class ModulePool(list):
     def __init__(self, top_module):
         self.top_module = top_module
         self.modules = []
-
+        self.add(module=top_module)
+        
     def __iter__(self):
         return self.modules.__iter__()
 
@@ -144,10 +147,10 @@ class ModulePool:
         return len(self.modules)
 
     def __contains__(self,v):
-        return v in self.files
+        return v in self.modules
 
     def __getitem__(self,v):
-        return self.files(v)
+        return self.modules[v]
 
     def __str__(self):
         return str([str(m) for m in self.modules])
@@ -160,6 +163,8 @@ class ModulePool:
             if mod.url == module.url:
                 return False
         self.modules.append(module)
+        for m in module.git + module.svn + module.local:
+            self.add(m)
         return True
 
     def fetch_all(self):