diff --git a/knit.cabal b/knit.cabal
--- a/knit.cabal
+++ b/knit.cabal
@@ -7,7 +7,7 @@
 -- hash: 9a018114683474c6cf3790641de1ab1452d949f9accab039ef8c9c01bc3dcf91
 
 name:           knit
-version:        0.2.0.0
+version:        0.3.0.0
 synopsis:       Ties the knot on data structures that reference each other by unique keys.
 description:    Please see the README on GitHub at <https://github.com/pkamenarsky/knit#readme>
 category:       Data Structures
diff --git a/src/Knit.hs b/src/Knit.hs
--- a/src/Knit.hs
+++ b/src/Knit.hs
@@ -237,9 +237,15 @@
   gGatherTableIds (Right u) = gGatherTableIds u
 
 instance ( GGatherTableIds ts
-         , KnitRecord tables r
          , KnownSymbol table
-         ) => GGatherTableIds (Named table [r tables 'Unresolved], ts) where
+         ) => GGatherTableIds (Named table a, ts) where
+  gGatherTableIds (_, ts) = gGatherTableIds ts
+
+instance {-# OVERLAPPING #-}
+  ( GGatherTableIds ts
+  , KnitRecord tables r
+  , KnownSymbol table
+  ) => GGatherTableIds (Named table [r tables 'Unresolved], ts) where
   gGatherTableIds (Named records, ts) = (table, eids):gGatherTableIds ts
     where
       table = symbolVal (Proxy :: Proxy table)
@@ -349,6 +355,9 @@
   gResolveTables notRemoved rsvMap (Left u) = Left $ gResolveTables notRemoved rsvMap u
   gResolveTables _ _ _ = undefined
 
+instance GResolveTables us ts => GResolveTables (Named table a, us) (Named table a, ts) where
+  gResolveTables nr rsvMap (a, us) = (a, gResolveTables nr rsvMap us)
+
 instance
   ( GResolveTables us ts
   , KnitRecord tables t 
@@ -528,7 +537,7 @@
   LookupTableType name (Either records Eot.Void) = LookupTableType name records
   LookupTableType name (Eot.Named name [record tables recordMode], records)
     = '(record, ExpandRecord name (Eot (record tables 'Done)))
-  LookupTableType name (Eot.Named otherName [record tables recordMode], records)
+  LookupTableType name (Eot.Named otherName a, records)
     = LookupTableType name records
 
   LookupTableType name eot = TypeError ('Text "Can't lookup table type")
diff --git a/test/Example.hs b/test/Example.hs
--- a/test/Example.hs
+++ b/test/Example.hs
@@ -22,7 +22,8 @@
 deriving instance Show (Person Model Resolved)
 
 data Model m = Model
-  { persons :: Table Model m Person
+  { version :: String
+  , persons :: Table Model m Person
   } deriving (Generic, KnitTables)
 
 deriving instance Show (Model Resolved)
@@ -30,9 +31,10 @@
 --------------------------------------------------------------------------------
 
 model :: Model Unresolved
-model = Model
+model = Model ""
   [ Person (Id "Alice") [ ForeignId "Bob", ForeignId "cat" ]
   , Person (Id "Bob") [ ForeignId "Alice" ]
+  , Person (Remove "Bob2") [ ForeignId "Alice" ]
 
   -- You may disagree, but the cat thinks of itself as Person
   , Person (Id "cat") [ ForeignId "cat" ]
@@ -44,7 +46,7 @@
   Left e -> error (show e)
 
 manualModel :: Model Resolved
-manualModel = Model
+manualModel = Model ""
   [ alice
   , bob
   , cat
@@ -57,7 +59,7 @@
 --------------------------------------------------------------------------------
 
 model2 :: Model Unresolved
-model2 = Model
+model2 = Model ""
   [ Person (Remove "Alice") [ ForeignId "Bob", ForeignId "cat" ]
   , Person (Id "Bob") [ ForeignId "Alice" ]
 
@@ -71,7 +73,7 @@
   Left e -> error (show e)
 
 manualModel2 :: Model Resolved
-manualModel2 = Model
+manualModel2 = Model ""
   [ cat
   ]
   where
