 ; --------------------------------------------------------
 
 (defn ago-reg-state-machine [ago-world state-machine-arr buf]
-  (swap! ago-world #(assoc-in % [:smas-new (.-buf-id buf)] state-machine-arr)))
+  (swap! ago-world #(seqv+ (assoc-in % [:smas-new (.-buf-id buf)] state-machine-arr))))
 
 (defn ago-run-state-machine [ago-world state-machine-arr buf]
   (swap! ago-world #(-> %
                         (dissoc-in [:smas-new (.-buf-id buf)])
-                        (assoc-in [:smas (.-buf-id buf)] state-machine-arr))))
+                        (assoc-in [:smas (.-buf-id buf)] state-machine-arr)
+                        (seqv+))))
 
 (defn ago-dereg-state-machine [ago-world buf]
   (swap! ago-world #(-> %
                         (dissoc-in [:smas-new (.-buf-id buf)])
-                        (dissoc-in [:smas (.-buf-id buf)]))))
+                        (dissoc-in [:smas (.-buf-id buf)])
+                        (seqv+))))
 
 (defn ago-revive-state-machine [ago-world old-sma buf]
   (let [ch (rewindable.ago/ago-chan-buf ago-world buf)

  (resize [_] nil) ; From RingBuffer 'interface'.

  (cleanup [_ keep?]
    (swap! ago-world #(update-in % [:bufs buf-id] (fn [xs] (filter keep? xs)))))

  protocols/Buffer
  (full? [this]

  (pop [_]
    ; Assumes nil is not a valid buffer item.
    (when-let [x (last (get-in @ago-world [:bufs buf-id]))]
      (swap! ago-world #(seqv+ (update-in % [:bufs buf-id] drop-last)))
      (when (empty? (get-in @ago-world [:bufs buf-id]))
        (swap! ago-world #(seqv+ (dissoc-in % [:bufs buf-id]))))
      x))

  (unshift [_ x]
    (swap! ago-world #(seqv+ (update-in % [:bufs buf-id] conj x)))
    nil)

  (unbounded-unshift [this x] ; From RingBuffer 'interface'.
