                                item))
                            body)]
     (when-not (vector? arguments)
-      (throw (IllegalArgumentException. "It's arguments must be a vector")))
+      (throw (IllegalArgumentException. (format "Task %s's arguments must be a vector" (name tname)))))
     (when *debug*
-      (prn name "new-body:" new-body))
+      (prn tname "new-body:" new-body))
     `(swap! tasks
             assoc
-            ~name
+            ~tname
             ~(list 'fn
                    (vec (concat '[host user cluster] arguments))
                    (cons 'do new-body)))))

"
    :arglists '([name doc-string? [params*] body])
    :added "0.1"}
  deftask [name & decl ]
  (let [name (keyword name)
        m (if (string? (first decl))
            (next decl)
            decl)


      Please see https://github.com/killme2008/clojure-control/wiki/Define-clusters
     "
    :arglists '([cname & options])
    :added "0.1"}
  defcluster [cname & args]
  (let [cname (keyword cname)]
    `(let [m# (apply hash-map ~(cons 'list (unquote-cluster args)))]
       (swap! clusters assoc ~cname (assoc m# :name ~cname)))))

(defmacro ^:private when-exit
  ([test error]
