         }
     }
 
-    fileprivate func define<ObjectType: InjectableObject, ResultType: InjectableObject>(key simpleKey: String = #function, definitionKey: String = #function, scope: Scope = .objectGraph, initClosure: DefinitionClosure<ObjectType>? = nil) -> ResultType {
+    fileprivate func define<ObjectType: InjectableObject, ResultType: InjectableObject>(key simpleKey: String = #function, definitionKey: String = #function, scope: Scope = .objectGraph, definitionClosure: DefinitionClosure<ObjectType>? = nil) -> ResultType {
         
         let key: String = String(reflecting: self).replacingOccurrences(of: ".", with: "")+simpleKey
         var result:ObjectType

        } else {

            let definition = Definition<ObjectType>()
            initClosure?(definition)
            self.definitions[definitionKey] = definition
            
            guard var object = definition.initObject() else {


    public func definePlaceholder<ObjectType: InjectableObject>(key: String = #function) -> ObjectType {
        let closure: DefinitionClosure<ObjectType>? = nil
        return self.define(key: key, definitionClosure: closure)
    }
    
    public func defineInjection<ObjectType>(key: String = #function, definitionKey: String = #function, scope: Scope = .objectGraph, into initClosure: @autoclosure @escaping () -> ObjectType, inject injectClosure: @escaping ObjectInjectClosure<ObjectType> = { _ in } ) {
