 	- Parameter coordinator: The coordinator implementation to start.
 	- Parameter completion: An optional `Callback` passed to the coordinator's `stop()` method.
 	*/
-	public func stopChild<U>(with identifier: Identifier, type: U.Type, completion: @escaping Callback = {_ in}) where U: UIResponder {
+	public func stopChild<U>(with identifier: String, type: U.Type, completion: @escaping Callback = {_ in}) {
 		guard let c = childCoordinators[identifier] as? Coordinator<U> else { return }
 		stopChild(coordinator: c, completion: completion)
+	}
+}
+
+//	Inject parentCoordinator property into all UIViewControllers
+extension UIViewController {
+	private struct AssociatedKeys {
+		static var ParentCoordinator = "ParentCoordinator"
+	}
+	///	*Must* be set for View Controller acting as Coordinator.rootViewController
+	open var parentCoordinator: Coordinator<Any>? {
+		get {
+			//	DANGER: this returns Any! so if you call this and
+			//	object is not really there, your app will crash
+			return objc_getAssociatedObject(self, &AssociatedKeys.ParentCoordinator) as? Coordinator<Any>
+		}
+		set {
+			objc_setAssociatedObject(self, &AssociatedKeys.ParentCoordinator, newValue, .OBJC_ASSOCIATION_RETAIN)
+		}
 	}
 }
 

		coordinator.parentCoordinator = nil
		coordinator.stop {
			[unowned self] coordinator in
			guard let c = self.childCoordinators.removeValue(forKey: (coordinator as! Coordinator<U>).identifier) else { return }
			completion(c)
		}
	}

then keep that flow inside the given container controller.
Expose to Coordinator only those behaviors that cause push/pop/present to bubble up
*/

open class Coordinator<T> {
	/// A callback function used by coordinators to signal events.
	public typealias Callback = (Coordinator<Any>) -> Void


	/// The root view controller for a coordinator.
	///	Each coordinator creates its VC hierarchy internally, so there should be no need to alter this once set
	open var rootViewController: T


	/// You need to supply at least one UIViewController (or any of its subclasses) that will be loaded as root.
	///	Usually one of container controllers (UINavigationController, UITabBarController etc)
