                  nxt))
         `(SimpleContainer ~r)))))
 
-(defn attributes
+(defn- attributes
   "Reads optional name symbol and doc string from args,
   returns [m a] where m is a map containing keys
   [:name :doc :ns :file :line] and a is remaining arguments."

        args (if (string? (first args)) (next args) args)]
    [m args]))

(defn options
  "Reads keyword-value pairs from args, returns [m a] where m is a map
  of keyword/value options and a is remaining arguments."
  [args]

      (assoc active c (or (active c) (apply f states)))
      active)))

(defn- close-context
  "Closes context c and removes it from active."
  [active c]
  (let [states (map active (:parents c))]
