   (let [done (atom [])]
     (->> states
          (sort-by (comp :order meta) order)
-         (map #(fun % (meta %) done))
-         doall)
+         (run! #(fun % (meta %) done)))
     @done))
 
 (defn- merge-lifecycles


(defn stop [& states]
  (let [states (or states (find-all-states))
        _ (doall (map unsub states))     ;; unmark substitutions marked by "start-with"
        stopped (bring states down >)]
    (doall (map rollback! states))       ;; restore to origin from "start-with"
    {:stopped stopped}))

(defn stop-except [& states]
  (let [all (set (find-all-states))
        states (remove (set states) all)
        _ (doall (map unsub states))     ;; unmark substitutions marked by "start-with"
        stopped (bring states down >)]
    (doall (map rollback! states))       ;; restore to origin from "start-with"
    {:stopped stopped}))

(defn start-with-args [xs & states]

    (start)))

(defn start-with [with]
  (doseq [[from to] with]
    (substitute! from to))
  (start))

(defn start-without [& states]
