         folders are stored. This is normally `./` if
         you are running Vapor using `.build/xxx/App`
     */
-    public var workDir = "./" {
-        didSet {
-            if self.workDir.characters.last != "/" {
-                self.workDir += "/"
-            }
-        }
-    }
+    public let workDir: String
+
+    /**
+        `Middleware` will be applied in the order
+        it is set in this array.
+
+        Make sure to append your custom `Middleware`
+        if you don't want to overwrite default behavior.
+     */
+    public var globalMiddleware: [Middleware]
+
+    /**
+        Provider classes that have been registered
+        with this application
+     */
+    public var providers: [Provider] = []
 
     /**
         Resources directory relative to workDir


        bootRoutes()

        if config.environment == .production {
            Log.info("Production environment detected, disabling information logs.")
            Log.enabledLevels = [.error, .fatal]
        }

        do {
            Log.info("Server starting on \(host):\(port)")

            let server: Server
            if let presetServer = self.server {
                server = presetServer
            } else {
                server = try HTTPStreamServer<ServerSocket>(
                    host: host,
                    port: port,
                    responder: self
                )
                self.server = server
            }

            try server.start()
        } catch {
            Log.error("Server start error: \(error)")
        }

        }

        response.headers["Date"] = Response.Headers.Values(Response.date)
        response.headers["Server"] = Response.Headers.Values("Vapor \(Vapor.VERSION)")

        return response
    }
