         return Guise.register(container: Container.default, name: Name.default, lifecycle: lifecycle, resolve: resolve)
     }
 
-}
+    public func resolve<D>(key: Key, parameter: Any = (), lifecycle: Lifecycle = .cached) -> D? {
+        return Guise.resolve(key: key, parameter: parameter, lifecycle: lifecycle)
+    }
+    
+    public func resolve<D, C: Hashable, N: Hashable>(container: C, name: N, parameter: Any = (), lifecycle: Lifecycle = .cached) -> D? {
+        let key = Key(type: D.self, container: container, name: name)
+        return Guise.resolve(key: key, parameter: parameter, lifecycle: lifecycle)
+    }
+    
+    public func resolve<D, C: Hashable>(container: C, parameter: Any = (), lifecycle: Lifecycle = .cached) -> D? {
+        return Guise.resolve(container: container, name: Name.default, parameter: parameter, lifecycle: lifecycle)
+    }
+    
+    public func resolve<D, N: Hashable>(name: N, parameter: Any = (), lifecycle: Lifecycle = .cached) -> D? {
+        return Guise.resolve(container: Container.default, name: name, parameter: parameter, lifecycle: lifecycle)
+    }
+    
+    public func resolve<D>(parameter: Any = (), lifecycle: Lifecycle = .cached) -> D? {
+        return Guise.resolve(container: Container.default, name: Name.default, parameter: parameter, lifecycle: lifecycle)
+    }
+
+}

    
    public static func register<P, D>(lifecycle: Lifecycle = .notCached, resolve: @escaping (P) -> D) -> Key {
        return register(container: Container.default, name: Name.default, lifecycle: lifecycle, resolve: resolve)
    }
    
    public static func container<C: Hashable>(name: C, lifecycle: Lifecycle = .notCached) -> Guise {

    }
    
    public static func resolve<D, C: Hashable, N: Hashable>(container: C, name: N, parameter: Any = (), lifecycle: Lifecycle = .cached) -> D? {
        let key = Key(type: D.self, container: container, name: name)
        return resolve(key: key, parameter: parameter, lifecycle: lifecycle)
    }
    
