     
     public init() { }
     
-    public func shared<T>(name: String, factory: @autoclosure () -> T, configure configureOrNil: ((T) -> ())? = nil) -> T {
+    public func shared<T>(name: String, @autoclosure factory: () -> T, configure configureOrNil: ((T) -> ())? = nil) -> T {
         return inject(
             lifecyle: .Shared,
             name: name,

        )
    }
    
    func inject<T, C: InstanceContainer where C.InstanceType == T>(# lifecyle: Lifecyle, name: String, inout instancePool: [String:AnyObject], containerFactory: (T) -> C, factory: @autoclosure () -> T, configure configureOrNil: ((T) -> ())?) -> T {
        if let container = instancePool[name] as? C {
            if let instance = container.instance {
                return instance

        )
    }
    
    public func scoped<T>(name: String, @autoclosure factory: () -> T, configure configureOrNil: ((T) -> ())? = nil) -> T {
        return inject(
            lifecyle: .Scoped,
            name: name,
