 
 (defn define-flag [flagvalues flag ns]
   (swap! flagvalues register-flag flag ns))
+
 
 (defn define [parser name default help serializer & args]
   (define-flag

     :else
     (throw (Exception. (str "Non boolean argument to boolean flag: " argument))))))

(defn define-boolean [name default help & args]
  (apply define boolean-parser name default
         (or help "a boolean value")

;; values without actually creating a map, right?
(defn flags
  ([values] (into {}
                  (for [[name flag] (:__flags @values)] [name (:value @flag)])))
  ([] (flags *flags*)))

(defrecord Flag
