     /// - Parameter next: the closure for the next execution block
     ///
     private func processHelper(request: RouterRequest, response: RouterResponse, next: () -> Void) {
-        middleware.handle(request, response: response) { () in
-            request.params = [:]
-            next()
+        for middleware in middlewares {
+            middleware.handle(request, response: response) { () in
+                request.params = [:]
+                next()
+            }
         }
     }
 

    ///
    /// Convenience initializer
    ///
    convenience init(method: RouterMethod, pattern: String? , handler: RouterHandler) {

        self.init(method: method, pattern: pattern, middleware: RouterMiddlewareGenerator(handler: handler))
    }

    ///

    ///
    /// - Returns: a RouterElement instance
    ///
    private init(method: RouterMethod, pattern: String?, middleware: [RouterMiddleware]) {

        self.method = method
        self.pattern = pattern
        self.regex = nil
        self.keys = nil
        self.middlewares = middleware

        SysUtils.doOnce(&RouterElement.regexInit) {
            do {
