   (assoc state :new-item-text (:text m)))
 
 (defmethod step :push [{:keys [new-item-text] :as state} _]
-  (update state :stack conj new-item-text))
+  (-> state
+    (update :stack conj new-item-text)
+    (assoc :new-item-text "")))
 
 (defmethod step :pop [state _]
   (update state :stack pop))
+
+(defmethod step :toggle-snoop [state _]
+  (update state :snooping not))
 
 
 ; VIEW HELPERS

    [:button
     {:on-click (on-click :pop)}
     "Pop"]]
   [:div
    [:p (:new-item-text state)]
    [:input

(defonce app-state
  (atom
    {:stack (list "first" "second")
     :new-item-text ""
     :snooping false}))

(defmulti step
  (fn [_ {:keys [id]}]
