     }
     return try closure()
   }
-
-  // MARK: - Removing definitions
-  
-  /**
-   Removes previously registered definition from container.
-   
-   - parameter tag: tag used to register definition
-   - parameter definition: definition to remove
-   */
-  public func remove<T, F>(definition: DefinitionOf<T, F>, forTag tag: Tag? = nil) {
-    let key = DefinitionKey(protocolType: T.self, factoryType: F.self, associatedTag: tag)
-    remove(definitionForKey: key)
-  }
-  
-  func remove(definitionForKey key: DefinitionKey) {
-    threadSafe {
-      definitions[key] = nil
-    }
-  }
-
-  /**
-   Clear all the previously registered dependencies on this container.
-   */
-  public func reset() {
-    threadSafe {
-      definitions.removeAll()
-    }
-  }
-
-  // MARK: Register definitions
+  
+}
+
+// MARK: - Registering definitions
+
+extension DependencyContainer {
   
   /**
   Register a Void->T factory associated with optional tag.

    }
  }

  // MARK: Resolve dependencies
  
  /**
  Resolve a dependency.

    }
  }
  
  ///Pool to hold instances, created during call to `resolve()`.
  ///Before `resolve()` returns pool is drained.
  class ResolvedInstances {
    var resolvedInstances = [DefinitionKey: Any]()
