 }
 
 extension RouterBuilder {
-    public func compose(path: String, middleware: MiddlewareType..., router: RouterType) {
+    public func compose(path: String = "", middleware: MiddlewareType..., router: RouterType) {
         let prefix = self.path + path
         let prefixPathComponentsCount = router.splitPathIntoComponents(prefix).count
 

        }
        return nil
    }

    private func createRoute(path path: String, method: Method, action: Action) {
        let route = Route(
            path: path,
            actions: [method: action]
        )
        routes.append(route)
    }

    private func createRoute(path path: String, fallback: Action) {
        let route = Route(
            path: path,
            fallback: fallback
        )
        routes.append(route)
    }
}

public final class Route: RouteType {
    public let path: String
    public var actions: [Method: Action]
    public var fallback: Action

    init(path: String, actions: [Method: Action] = [:], fallback: Action = Route.defaultFallback) {
        self.path = path

        actions[method] = action
    }

    static let defaultFallback = Action { _ in
        Response(status: .MethodNotAllowed)
    }
}
