         
     }
     
-    public final func get(path: String, closure: Route.Handler) {
-        self.add(.Get, path: path, closure: closure)
+    public final func get(path: String, handler: Route.Handler) {
+        self.add(.Get, path: path, handler: handler)
     }
     
-    public final func post(path: String, closure: Route.Handler) {
-        self.add(.Post, path: path, closure: closure)
+    public final func post(path: String, handler: Route.Handler) {
+        self.add(.Post, path: path, handler: handler)
     }
     
-    public final func put(path: String, closure: Route.Handler) {
-        self.add(.Put, path: path, closure: closure)
+    public final func put(path: String, handler: Route.Handler) {
+        self.add(.Put, path: path, handler: handler)
     }
     
-    public final func patch(path: String, closure: Route.Handler) {
-        self.add(.Patch, path: path, closure: closure)
+    public final func patch(path: String, handler: Route.Handler) {
+        self.add(.Patch, path: path, handler: handler)
     }
     
-    public final func delete(path: String, closure: Route.Handler) {
-        self.add(.Delete, path: path, closure: closure)
+    public final func delete(path: String, handler: Route.Handler) {
+        self.add(.Delete, path: path, handler: handler)
     }
     
-    public final func options(path: String, closure: Route.Handler) {
-        self.add(.Options, path: path, closure: closure)
+    public final func options(path: String, handler: Route.Handler) {
+        self.add(.Options, path: path, handler: handler)
     }
     
-    public final func any(path: String, closure: Route.Handler) {
-        self.get(path, closure: closure)
-        self.post(path, closure: closure)
-        self.put(path, closure: closure)
-        self.patch(path, closure: closure)
-        self.delete(path, closure: closure)
+    public final func any(path: String, handler: Route.Handler) {
+        self.get(path, handler: handler)
+        self.post(path, handler: handler)
+        self.put(path, handler: handler)
+        self.patch(path, handler: handler)
+        self.delete(path, handler: handler)
     }
     
+
+    
+    /**
+        Creates standard Create, Read, Update, Delete routes
+        using the Handlers from a supplied `Controller`.
+     
+        The `path` supports nested resources, like `users.photos`.
+        users/:user_id/photos/:id
+     
+        Note: You are responsible for pluralizing your endpoints.
+    */
     public final func resource(path: String, controller: Controller) {
 
         let last = "/:id"
         
         let shortPath = path.componentsSeparatedByString(".")
             .flatMap { component in
-                return ["\(component)s", "/:\(component)_id/"]
+                return [component, "/:\(component)_id/"]
             }
             .dropLast()
             .joinWithSeparator("")

        print(fullPath)
        
        // ie: /users
        self.get(shortPath, closure: controller.index)
        self.post(shortPath, closure: controller.store)
        
        // ie: /users/:id
        self.get(fullPath, closure: controller.show)
        self.put(fullPath, closure: controller.update)
        self.delete(fullPath, closure: controller.destroy)
    }
    
    public final func add(method: Request.Method, path: String, closure: Route.Handler) {
        
        //Convert Route.Handler to Request.Handler
        var handler = { request in
            return try closure(request).response()
        }
        
        //Apply any scoped middlewares

        self.routes.append(route)
    }
    
    /**
        Applies the middleware to the routes defined
        inside the closure. This method can be nested within
        itself safely.
    */
    public func middleware(middleware: Middleware.Type, handler: () -> ()) {
       self.middleware([middleware], handler: handler)
    }
    
    public func middleware(middleware: [Middleware.Type], handler: () -> ()) {
        let original = Route.scopedMiddleware
        Route.scopedMiddleware = middleware
        
        handler()
        
        Route.scopedMiddleware = original
    }
    
    public final func host(host: String, handler: () -> Void) {
        Route.scopedHost = host
        
        handler()
        
        Route.scopedHost = nil
    }
}