         [clojure.pprint :only (pprint cl-format)])
   (:refer-clojure :exclude [replace]))
 
-(defn ^:private build-doc [{:keys [switches docs default]}]
+(defn- build-doc [{:keys [switches docs default]}]
   [(apply str (interpose ", " switches))
    (or (str default) "")
    (or docs "")])
 
-(defn ^:private banner-for [specs]
+(defn- banner-for [specs]
   (println "Usage:")
   (println)
   (let [docs (into (map build-doc specs)

         :default
         (recur options (conj extra-args (first args)) (rest args)))))))

(defn ^:private switches-for
  [switches flag]
  (-> (for [^String s switches]
        (cond

                     (contains? switches arg))))
       first))

(defn- default-values-for
  [specs]
  (into {} (for [s specs] [(s :name) (s :default)])))

(defn- apply-specs
  [specs args]
  (loop [options    (default-values-for specs)
         extra-args []
