   [path args & body]
   (compile-route nil path args body))
 
-(defn- keyword->middleware
+(defn- middleware-sym [x]
+  (symbol (namespace x) (str "wrap-" (name x))))
+
+(defn- ->middleware
   "Turn a keyword into a wrapper function symbol.
   e.g. :test => wrap-test
        (:test x) => (wrap-test x)"
   [kw]
-  (letfn [(mw-sym [x]
-            (symbol (namespace x) (str "wrap-" (name x))))]
-    (cond
-      (keyword? kw)
-        (mw-sym kw)
-      (and (seq? kw) (keyword? (first kw)))
-        (cons (mw-sym (first kw)) (rest kw))
-      :else
-        kw)))
+  (cond
+    (keyword? kw)
+      (middleware-sym kw)
+    (and (seq? kw) (keyword? (first kw)))
+      (cons (middleware-sym (first kw)) (rest kw))
+    :else
+      kw))
 
 (defmacro wrap!
   "DEPRECATED: Use '->' instead.

(ns compojure.core
  "A concise syntax for generating Ring handlers."
  (:use [clojure.contrib.def :only (name-with-attributes)]
        clout.core
        compojure.response))

(defn- method-matches
  "True if this request matches the supplied method."

        form-method    (get-in request [:form-params "_method"])]
    (or (nil? method)
        (if (and form-method (= request-method :post))
          (= (str/upper-case (name method)) form-method)
          (= method request-method)))))

(defn- prepare-route
