 }
 		
 
+let meows: [Any.Type] = [Breed.self, Cat.self, CatReferencing.self, Tiger.self, Breed.Country.self, Breed.Origin.self, Breed.Thing.self, CatLike.self]
+
 // 🐈 Statistics
-// Models: 2
-//   Breed, Cat
-// Serializables: 5
-//   Breed, Cat, Breed.Country, Breed.Origin, Breed.Thing
+// Models: 4
+//   Breed, Cat, CatReferencing, Tiger
+// Serializables: 8
+//   Breed, Cat, CatReferencing, Tiger, Breed.Country, Breed.Origin, Breed.Thing, CatLike
 // Tuples: 1


		
extension Breed.Country : Serializable {
	init(restoring source: BSON.Primitive) throws {
		guard let rawValue = String(source) else {



		
// fred
extension Document {
	func unpack(_ key: String) throws -> CatLike {
		guard let document = self[key] as? Document, let ref = DBRef(document, inDatabase: Meow.database) else {
			throw Meow.Error.missingOrInvalidValue(key: key)
		}
		
		guard let instance = try ref.resolveModel() as? CatLike else {
			throw Meow.Error.missingOrInvalidValue(key: key)
		}
		
		return instance
	}
}

		
extension Document {
	mutating func pack(_ tuple: (String,String,String)?, as key: String) {
		guard let tuple = tuple else {
