            (let [[chs result] args] 2))}})
 
 (defn vis-init [cmds cmd-handlers]
-  (let [vis (atom {:actxs {} :chs {}})
+  (let [vis (atom {:actxs {} :want-chs {}})
         max-inflight (atom 10)
         event-delay (atom 0)
         event-ch (chan)

  {"ago"
   {:beg (fn [vis actx args]
           (let [[child-actx] args]
             (swap! vis #(assoc-in % [:actxs child-actx]
                                   {:parent actx :want-chs {}}))))
    :end (fn [vis actx args]
           (let [[child-actx result] args]
             (swap! vis #(dissoc-in % [:actxs child-actx]))))}
   "aclose"
   {:beg (fn [vis actx args]
           (let [[ch] args] 1))

   "atake"
   {:beg (fn [vis actx args]
           (let [[ch] args]
             (swap! vis #(assoc-in % [:want-chs actx ch] :take))))
    :end (fn [vis actx args]
           (let [[ch result] args]
             (swap! vis #(dissoc-in % [:want-chs actx ch]))))}
   "aput"
   {:beg (fn [vis actx args]
           (let [[ch msg] args]
             (swap! vis #(assoc-in % [:want-chs actx ch] :put))))
    :end (fn [vis actx args]
           (let [[ch msg result] args]
             (swap! vis #(dissoc-in % [:want-chs actx ch]))))}
   "aalts"
   {:beg (fn [vis actx args]
           (let [[chs] args] 1))
