     public init<T, C: Hashable>(type: T.Type, container: C) {
         self.init(type: type, name: Name.default, container: container)
     }
-}
-
-extension Set where Element == AnyKey {
+    
+    public init<T>(type: T.Type) {
+        self.init(type: type, name: Name.default, container: Name.default)
+    }
+}
+
+extension Sequence where Iterator.Element == AnyKey {
     public func typed<T>() -> Set<Key<T>> {
         return Set<Key<T>>(flatMap{ Key($0) })
     }

     
    */
    public static func register<P, T>(keys: Set<Key<T>>, metadata: Any = (), cached: Bool = false, resolution: @escaping Resolution<P, T>) -> Set<Key<T>> {
        return Set(keys.map{ register(key: $0, metadata: metadata, cached: cached, resolution: resolution) })
    }
    
    /**

        self.hashValue = hash(self.type, self.name, self.container)
    }
    
}

extension Sequence where Iterator.Element: TypedKey {
    public func untyped() -> Set<AnyKey> {
        return Set(map{ AnyKey($0) })
    }
}

public func ==<T>(lhs: Key<T>, rhs: Key<T>) -> Bool {
