                                    item))
                                item))
                            body)]
-    (if (not (vector? arguments))
-      (throw (IllegalArgumentException. "Task must have arguments vector")))
-    (if *debug*
+    (when-not (vector? arguments)
+      (throw (IllegalArgumentException. "It's arguments must be a vector")))
+    (when *debug*
       (prn name "new-body:" new-body))
     `(swap! tasks
             assoc

                                 " just needs "
                                 task-arg-count
                                 " arguments")))
               (binding [*enable-logging* (if (nil? log) true log)
                         *debug* debug]
                 (if *enable-logging*
                   (println  (str bash-bold
                                  "Performing "
                                  (name cluster-name)
                                  bash-reset
                                  (if parallel
                                    " in parallel"))))
                 (let [map-fn (if parallel pmap map)
                       a (doall (map-fn (fn [addr] [addr (perform addr user cluster task task-name task-args)])

     (str bash-greenbold ~@content bash-reset)
     (str ~@content)))

(defstruct ^:private ExecProcess  :stdout :stderr :status)

(defn gen-log [host tag content]
