         exit(0)
     }
 }
+
+extension Application: Router {
+    /// All routes registered to this router
+    public var routes: [Route<Responder>] {
+        return router.routes
+    }
+    
+    /// Routes a new Request to get a responder that can make a Response
+    public func route(request: Request) -> Responder? {
+        return router.route(request: request)
+    }
+    
+    /// Registers a new route. This should only be done during boot
+    public func register(route: Route<Responder>) {
+        router.register(route: route)
+    }
+}

        self.serviceCache = .init()
        self.extend = Extend()
        self.eventLoop = try DefaultEventLoop(label: "codes.vapor.application")

        if #available(OSX 10.12, *) {
            Thread.detachNewThread {


    /// Use this to create stored properties in extensions.
    public var extend: Extend
    
    /// An internal reference to the Router to provide routing shortcuts
    ///
    /// FIXME: Force unwrapped because you cannot initialize a router before the rest is initialized
    fileprivate var router: Router!

    /// Creates a new Application.
    public init(
