             .first
             .map { (handler, var parameters) -> (String, Parameters) in
                 for item in queryItems { parameters[item.0] = item.1 }
-                return handler!(route!, parameters)
+                return handler!(route, parameters)
         }
         
         return self.routes

    public func open(URL: NSURL) -> Bool {
        let components = NSURLComponents(URL: URL, resolvingAgainstBaseURL: false)
        
        let route: String! = components
            .map { "/" + ($0.host ?? "") + ($0.path ?? "") }
        
        if route == nil { return false }
        
        let queryItems = components
            .flatMap { $0.queryItems }?

            let patterns = self?.patterns(route)
            let match = patterns?.regex.flatMap { self?.matchResults(aRoute, regex: $0) }?.first
            
            guard let m = match, let keys = patterns?.keys else {
                return (nil, [:])
            }
            
            var parameters: Parameters = [:]
            for i in 1 ..< m.numberOfRanges where keys.count == m.numberOfRanges - 1 {
                parameters.updateValue((aRoute as NSString).substringWithRange(m.rangeAtIndex(i)), forKey: keys[i-1])
            }
            
            return (handler, parameters)
        }
    }
    
