         // TODO: allow proxy to abort
         
         defer {
-            dispatch_async(routingQueue) { [weak self] in
+            dispatch_async(routingQueue) {
                 let semaphore = dispatch_semaphore_create(0)
                 
                 routes  /* Proxies */

        case Route((String) -> (RouteHandler?, Parameters))
    }
    
    let accessQueue: dispatch_queue_t = dispatch_queue_create("Routing Access Queue", DISPATCH_QUEUE_CONCURRENT)
    let routingQueue: dispatch_queue_t = dispatch_queue_create("Routing Queue", DISPATCH_QUEUE_SERIAL)
    private var routes: [RouteType] = [RouteType]()
    
    public init() {}
    
    public func proxy(pattern: String, handler: ProxyHandler) -> Void {
        dispatch_barrier_async(accessQueue) {

                
                _ = (proxiedRoute ?? route).map { (h, var p) -> (RouteHandler, Parameters) in
                    parameters.forEach { p[$0.0] = $0.1 }
                    dispatch_async(self.callbackQueue) {
                        h!(p) {
                            dispatch_semaphore_signal(semaphore)
                        }
