                                 (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}]))
+                [{:delta :put :msg msg :actx actx :ch ch :phase :prev}]))
     :after (fn [vis actx args]
              (let [[ch msg result] args]
                (swap! vis #(-> %

                     (:wait-chs actx-info))))
           (:actxs vis))
     (mapv (fn [delta]
             (case (:delta delta)
               :put (when (get chs (:ch delta))
                      ["<g transform='translate(500," (actx-y (:actx delta)) ")'>"
                       "<line class='delta' x1='0' y1='0' x2='100' y2='"
                       (- (ch-y (:ch delta)) (actx-y (:actx delta)))
                       "' stroke='green' stroke-width='1' marker-end='url(#triangle)'/>"
                       "</g>"])
               :take (when (get chs (:ch delta))
                       ["<g transform='translate(600," (ch-y (:ch delta)) ")'>"
                        "<line class='delta' x1='0' y1='0' x2='-100' y2='"
                        (- (actx-y (:actx delta)) (ch-y (:ch delta)))
                        "' stroke='" (if (:msg delta) "green" "black")
                        "' stroke-width='1' marker-end='url(#triangle)'/>"
                        "</g>"])
               :actx-start (when (> (actx-y (:child-actx delta)) line-height)
                             ["<g transform='translate(30," (actx-y (:actx delta)) ")'>"
                              "<line class='delta' x1='0' y1='0' x2='30' y2='"
                              (- (actx-y (:child-actx delta)) (actx-y (:actx delta)))
                              "' stroke='green' stroke-width='1' marker-end='url(#triangle)'/>"
                              "</g>"])
               :actx-end (when (> (actx-y (:child-actx delta)) line-height)
                           ["<g transform='translate(60," (actx-y (:child-actx delta)) ")'>"
                            "<line class='delta' x1='0' y1='0' x2='-30' y2='"
                            (- (actx-y (:actx delta)) (actx-y (:child-actx delta)))
                            "' stroke='black' stroke-width='1' marker-end='url(#triangle)'/>"
                            "</g>"])
               nil))
           deltas)]))

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

                          (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 :prev))))
          (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
                                                             deltas :curr))))
        (recur (inc num-events) @vis @vis-positions)))
    (ago world w
         (reset! root-actx world)
