     :else
     expr))
 
-(defn dedupe-symbols*
+(defn- dedupe-symbols*
   [sym->ap body]
   (letfn [(renamer [{:keys [body syms aps seen renames] :as summ} [s ap]]
            (let [ap' (rename ap renames)

    :else
    '()))

(defn rename-sym [expr renames]
  (get renames expr expr))

(defn rename [expr renames]
  (cond
    (symbol? expr)
    (rename-sym expr renames)

        sorted-deps (topo-sort (dependency-map sym->ap))]
    sorted-deps))

(defn- alet*
  [batches env body]
  (let [fb (first batches)
        rb (rest batches)
