     @param controllerClass The `UIViewController` `Class` which will be instanstiated when the URL is triggered in `open:`
     @param options Configuration for the route, such as modal settings
     */
-    open func map(format: String, controllerClass: Routable, options: RouteOptions? = nil) {
+    open func map<T:Routable>(format: String, controllerClass: T, options: RouteOptions? = nil) {
         var options: RouteOptions = options ?? RouteOptions()
         options.openClass = controllerClass
         self.routes[format] = options

        }
    }
    
    public init(routerOptions: RouteOptions, openParams: RoutableParams?, extraParams: RoutableParams?) {
        self.routeOptions = routerOptions
        self.openParams = openParams
        self.extraParams = extraParams

    /**
    The property determining if the mapped `UIViewController` should be opened modally or pushed in the navigation stack.
    */
    public let isModal : Bool
    
    /**
    The property determining the `UIModalPresentationStyle` assigned to the mapped `UIViewController` instance. This is always assigned, regardless of whether or not `modal` is true.
    */
    public let presentationStyle : UIModalPresentationStyle
    
    /**
    The property determining the `UIModalTransitionStyle` assigned to the mapped `UIViewController` instance. This is always assigned, regardless of whether or not `modal` is true.
    */
    public let transitionStyle : UIModalTransitionStyle
    /**
    Default parameters sent to the `UIViewController`'s initWithRouteParams: method. This is useful if you want to pass some non-`NSString` information. These parameters will be overwritten by any parameters passed in the URL in open:.
    */
    public let defaultParams : RoutableParams?
    
    /**
    The property determining if the mapped `UIViewController` instance should be set as the root view controller of the router's `UINavigationController` instance.
    */
    public let shouldOpenAsRootViewController : Bool
    
}

open class Router {
    
    open static let shared = Router()
    
    // Map of URL format NSString -> RouteOptions
    // i.e. "users/:id"
