         return Guise.key(type: type, name: name, container: container)
     }
     
-    public func key<P, D>(type type: String = String(reflecting: D.self), name: String? = nil, eval: P -> D) -> Guise.Key {
+    public func key<P, D>(type type: String = String(reflecting: D.self), name: String? = nil, @noescape eval: P -> D) -> Guise.Key {
         return Guise.key(type: type, name: name, container: container)
     }
     

        return Key(type: type, name: name, container: container)
    }
    
    public static func key<P, D>(type type: String = String(reflecting: D.self), name: String? = nil, container: String? = nil, eval: P -> D) -> Key {
        return Key(type: type, name: name, container: container)
    }
    

    }
    
    /**
     Unregisters the dependency with the given key.
    */
    public static func unregister(key: Key) -> Bool {
