 
 (defn world-vis-init [el-prefix init-event-delay]
   (init-roots)
-  (let [event-delay (atom init-event-delay)
-        step-ch (chan (dropping-buffer 1))
-        prog-ch (listen-el (gdom/getElement "prog-go") "click")
-        cmd-ch (map< (fn [ev] {:op (.-id (.-target ev))
+  (let [req-handlers cbfg.world.lane/cmd-handlers
+        req-ch (map< (fn [ev] {:op (.-id (.-target ev))
                                :x (js/parseInt (get-el-value "x"))
                                :y (js/parseInt (get-el-value "y"))
                                :delay (js/parseInt (get-el-value "delay"))

                    (>! event-run-ch [@vis nil true nil])))
                (recur))))
          (<! prog-ch)
          (close! req-ch)
          (close! expand-ch)
          (close! event-run-ch)
          (close! event-ch)
          (close! (:res-ch @prog-base))
          (recur (inc num-worlds)))))))

; --------------------------------------------

                     :net-connect-ch (achan-buf world 10)
                     :res-ch (achan-buf world 10)})
  (reset! prog-curr {:servers {}   ; { server-addr => ports }.
                     :clients {}   ; { client-addr => client-info }.
                     :reqs    {}}) ; { opaque-ts => [req, [[reply-ts reply] ...] }.
  (reset! prog-hover nil)
  (reset! prog-history []))

(defn prog-event [label fn]
  (let [pc (swap! prog-curr fn)]
    (swap! prog-history #(conj % [(count %) label pc]))))

; -------------------------------------------------------------------

