 			completion(c)
 		}
 	}
+
+	/**
+	Stops the child coordinator with given identifier and removes it from the `childCoordinators` array
+
+	- Parameter coordinator: The coordinator implementation to start.
+	- Parameter completion: An optional `Callback` passed to the coordinator's `stop()` method.
+	*/
+	public func stopChild(with identifier: Identifier, completion: @escaping Callback = {_ in}) {
+		guard let coordinator = childCoordinators[identifier] as? Coordinator<UIResponder> else { return }
+		coordinator.parent = nil
+		coordinator.stop { [unowned self] _ in
+			guard let c = self.childCoordinators.removeValue(forKey: identifier) else { return }
+			completion(c)
+		}
+	}
 }
 
 



	/// Default identifier is the class name of the Coordinator
	public var identifier: Identifier {
		return String(describing: self)
	}

	/// Parent Coordinator

	var rootViewController: RootController { get }

	///	Unique identifier for the Coordinator
	static var identifier: Identifier { get }
}


