     @exception NavigationControllerNotProvided Thrown if url opens a `UIViewController` and navigationController has not been assigned
     @exception initializerNotFound Thrown if the mapped `UIViewController` instance does not implement -initWithRouteParams: or +allocWithRouteParams:
     */
-    open func open(url: String, animated: Bool = true, extraParams: RoutableParams? = nil) {
-        
+    open func open(url: String, animated: Bool = true, extraParams: RoutableParams? = nil, completionCallback: (() -> Void)? = nil) {
         guard let params = routeParams(for: url, extraParams: extraParams), let options = params.routeOptions else {
             return
         }

        }
        
        if options.isModal {
            present(controller, animated: animated)
        } else if options.shouldOpenAsRootViewController {
            navController.setViewControllers([controller], animated: animated)
        } else {

     Present a viewcontroller and conditionally wrap it in a UINavigationController instance as needed
     **/
    
    open func present(_ controller:UIViewController, animated:Bool = true, modalNavController:UINavigationController? = nil, completionCallback: (() -> Void)? = nil) {
        guard let navController = navigationController else {
            fatalError("Router#navigationController has not been set to a UINavigationController instance")
        }
