                                                  (assoc-in [:actxs actx :wait-chs ch]
                                                            action)))
                                  (when (= action :put)
-                                   [{:delta :put :msg (first msgv) :actx actx :ch ch}])))
+                                   [{:delta :put :msg (first msgv) :actx actx :ch ch
+                                     :phase :prev}])))
                              ch-actions))))
     :after (fn [vis actx args]
              (let [[ch-bindings result] args

                          (str num-events ": " (last actx) " " verb " " step " " args))
        (when (and (not (zero? @event-delay)) (not-empty deltas) vis-last vis-last-positions)
          (set-el-innerHTML "vis-svg"
                            (apply str (flatten (vis-svg-actxs vis-last vis-last-positions deltas))))
          (when (> @event-delay 0) (<! (timeout @event-delay)))
          (when (< @event-delay 0) (<! step-ch)))
        (set-el-innerHTML "vis-html"
                          (apply str (flatten (vis-html-actx @vis @root-actx vis-positions
                                                             actx-ch-ch-infos))))
        (set-el-innerHTML "vis-svg"
                          (apply str (flatten (vis-svg-actxs @vis @vis-positions nil))))
        (recur (inc num-events) @vis @vis-positions)))
    (ago world w
         (reset! root-actx world)

                                (assoc-in [:actxs actx :wait-chs ch] :put)
                                (vis-add-ch ch nil)
                                (assoc-in [:chs ch :msgs msg] true)))
                [{:delta :put :msg msg :actx actx :ch ch :phase :prev}]))
    :after (fn [vis actx args]
             (let [[ch msg result] args]
               (swap! vis #(-> %
