                     (if (= meth method)
                       (if-let route-params (match-route route path)
                         (partial resource route-params) nil)))]
-    (some matches? *resources*)))
+    (or
+      (some matches? *resources*)
+      (partial *default-resource* {}))))
 
 (defmacro GET "Creates a GET resource."
   [route & body]
-  `(add-resource "GET" ~route (pseudo-servlet ~body)))
+  `(add-resource "GET" ~route (pseudo-servlet ~@body)))
 
 (defmacro PUT "Creates a PUT resource."
   [route & body]
-  `(add-resource "POST" ~route (pseudo-servlet ~body)))
+  `(add-resource "POST" ~route (pseudo-servlet ~@body)))
 
 (defmacro POST "Creates a POST resource."
   [route & body]
-  `(add-resource "PUT" ~route (pseudo-servlet ~body)))
+  `(add-resource "PUT" ~route (pseudo-servlet ~@body)))
 
 (defmacro DELETE "Creates a DELETE resource."
   [route & body]
-  `(add-resource "DELETE" ~route (pseudo-servlet ~body)))
+  `(add-resource "DELETE" ~route (pseudo-servlet ~@body)))
 
 (def #^{:doc 
   "A servlet that handles all requests into Compojure. Suitable for

    (cons [method (parse-route route) resource]
          *resources*)))

(defn find-resource
  "Find the first resource that matches the HttpServletRequest"
  [#^HttpServletRequest request response]

    (instance? java.io.File update)
      (let [out (. response (getOutputStream))
            in  (new FileInputStream update)]
        (. response (setHeader
          "Content-Type" (context-mimetype context (str update))))
        (pipe-stream in out))))

(def #^{:doc
