 			}
 		}
 	}
-    
-    public convenience init() {
-        self.init(providers: [])
-    }
-
+
+    /**
+        Routes added to the `Application`. They will
+        be registered to the `RouterDriver` when 
+        `start()` is called.
+    */
+    var routes: [Route] = []
 
 	/**
 		Initialize the Application.
-
-		- Parameter providers: Optional list of providers to add.
-	*/
-	public init(providers: [Provider.Type]) {
+	*/
+	public init() {
         self.server = SocketServer()
         self.router = NodeRouter()
 

			SessionMiddleware()
		]


        self.providers = []
        
        for provider in providers {
            self.addProvider(provider)
        }

        
        self.server.delegate = self
	}


	public func addProvider(provider: Provider.Type) {
		guard !self.hasProvider(provider) else {
			return
		}

		self.providers.append(provider)
	}

	public func hasProvider(provider: Provider.Type) -> Bool {
		for value in self.providers {
			if value == provider {
				return true
			}
		}

		return false
	}


	/**

		into the current `RouterDriver`.
	*/
	func registerRoutes() {
		for route in self.routes {
			self.router.register(hostname: route.hostname, method: route.method, path: route.path) { request in
				let response: Response

