 }
 
 public extension _Guise {
+    
+    @discardableResult static func register<ParameterType, HoldingType: Holder>(key: Key<HoldingType.Held>, metadata: Any = (), cached: Bool = false, resolution: @escaping Resolution<ParameterType, HoldingType>) -> Key<HoldingType.Held> {
+        return defaultResolver.register(key: key, metadata: metadata, cached: cached, resolution: resolution)
+    }
     
     @discardableResult static func register<ParameterType, RegisteredType>(key: Key<RegisteredType>, metadata: Any = (), cached: Bool = false, resolution: @escaping (ParameterType) -> RegisteredType) -> Key<RegisteredType> {
         return defaultResolver.register(key: key, metadata: metadata, cached: cached, resolution: resolution)

import Foundation

public extension Guising {
    
    @discardableResult func register<ParameterType, RegisteredType>(key: Key<RegisteredType>, metadata: Any = (), cached: Bool = false, resolution: @escaping (ParameterType) -> RegisteredType) -> Key<RegisteredType> {
        return register(key: key, metadata: metadata, cached: cached) { Strong(resolution($0)) }

    
    @discardableResult func register<Target>(injectable: Target.Type, injection: @escaping Injection<Target>) -> Key<Target> {
        let key = Key<Target>(container: Guise.Container.injections)
        return register(key: key) { (parameters: InjectionParameters) in
            return Uncached(injection(parameters.target, parameters.resolver))
        }
    }
    
