 	func forSegue<T>(identifier: String, for type: T.Type, completion: @escaping TransitionSetupBlock<T>) {
 		DispatchQueue.main.async {
 			self.performSegue(withIdentifier: identifier, sender: nil) { segue in
-				
 				var destination = segue.destination
 				
-				guard destination is T else { fatalError("Can't bring controller \(String(describing: destination.self)) to type \(type)") }
+				guard destination.moduleInput is T else { fatalError("Can't bring controller \(String(describing: destination.self)) to type \(type)") }
 				
 				if destination is UINavigationController {
 					destination = (segue.destination as! UINavigationController).topViewController ?? segue.destination
 				}
 				
-				completion(destination as! T)
+				completion(destination.moduleInput as! T)
 			}
 		}
 	}

///
extension UIViewController: TransitionHandler {
	
	///
	/// You can read more about this implemetation in this article - ["Swift improve performSegue(withIdentifier:sender:) or a router with storyboards"](https://habrahabr.ru/post/275783/)
	///
	
	class Box {
		let value: Any?
		init(_ value: Any?) {

	}
	
	
	///
	/// Turn on or off animate for current transition.
	/// - note: By default this transition is animated.
