                                  " just needs "
                                  task-arg-count
                                  " arguments")))
-               (binding [*enable-logging* (if (nil? log) true log)
+               (binding [*enable-logging* (or log true)
                          *debug* debug]
-                 (if *enable-logging*
+                 (when *enable-logging*
                    (println  (str bash-bold
                                   "Performing "
                                   (name cluster-name)
                                   bash-reset
-                                  (if parallel
+                                  (when 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)])

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

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

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

(defn gen-log [host tag content]
