 ; --------------------------------------------
 
 (defn kv-server [server-addr & ports]
-  (let [prog-world (:prog-world @prog-history)
-        world (:world prog-world)
+  (let [world (:world @prog-base)
         done (atom false)]
     (act server-init world
          (doseq [port ports]
            (when-let [listen-result-ch (achan server-init)]
-             (aput server-init (:net-listen-ch prog-world)
+             (aput server-init (:net-listen-ch @prog-base)
                    [server-addr port listen-result-ch])
              (when-let [[accept-ch close-accept-ch] (atake server-init listen-result-ch)]
                (cbfg.world.net/server-accept-loop world accept-ch close-accept-ch)
                (swap! prog-history
-                      #(let [ph (update-in % [:prog-world :servers server-addr]
+                      #(let [ph (update-in % [:prog-peers :servers server-addr]
                                            conj port)]
                          (update-in ph [:prog-events] conj
                                     [(count (:prog-events ph))
                                      :event
-                                     (:prog-world ph)]))))))
+                                     (:prog-peers ph)]))))))
          (reset! done true))
     (wait-done done)))
 
 (defn kv-client [client-addr server-addr server-port]
-  (let [prog-world (:prog-world @prog-history)
-        world (:world prog-world)
+  (let [world (:world @prog-base)
         done (atom false)]
     (act client-init world
-         (let [req-ch (cbfg.world.net/client-loop world (:net-connect-ch prog-world)
+         (let [req-ch (cbfg.world.net/client-loop world (:net-connect-ch @prog-base)
                                                   server-addr server-port
-                                                  client-addr (:res-ch prog-world))]
+                                                  client-addr (:res-ch @prog-base))]
            (swap! prog-history
-                  #(let [ph (assoc-in % [:prog-world :clients client-addr]
+                  #(let [ph (assoc-in % [:prog-peers :clients client-addr]
                                       {:client-addr client-addr
                                        :server-addr server-addr
                                        :server-port server-port

  (apply dom/select #js {:id "client"}
         (map (fn [client-addr]
                (dom/option #js {:value client-addr} (str client-addr)))
              (keys (:clients (:prog-world app))))))

(defn init-roots []
  (om/root render-world run-world

                  :gen-id gen-id})
            delayed-event-cb (fn [vis-next]
                               (println :on-delayed-event-cb @last-id))]
        (reset! prog-base {:world world
                           :net-listen-ch (achan-buf world 10)
                           :net-connect-ch (achan-buf world 10)
                           :res-ch (achan-buf world 10)})
        (cbfg.vis/process-events vis event-delay cbfg.vis/vis-event-handlers
                                 event-ch step-ch event-run-ch)
        (cbfg.vis/process-render el-prefix world event-run-ch delayed-event-cb)
        (make-net world
                  (:net-listen-ch @prog-base)
                  (:net-connect-ch @prog-base))
        (let [vis-chs {}
              req-ch (achan world)
              cmd-ch (map< (fn [ev] {:op (.-id (.-target ev))
