   {:id (str (gensym)), :text text})
 
 (defn tap-input [wire component]
-  (w/taps wire
-    {:event :keyboard-up :keypress :enter}
-      (fn [e]
-        (w/act wire :new-todo {:text (:value e)})
-        (set! (.-value (:target e)) ""))))
+  (-> wire
+      (w/tap {:event :keyboard-up :keypress :enter}
+             (fn [e]
+               (w/act wire :new-todo {:text (:value e)})
+               (set! (.-value (:target e)) "")))))
 
 (show/defclass TodoInput [component]
   (render [{:keys [wire]} state]

  (render [{:keys [text wire]}
           {:keys [selected]}]
    (wired/li (tap-item wire component)
      {:className (show/class-map {"list-item" true, "selected" selected})}
      text)))

(show/defclass TodoList [component]
  (render [{:keys [todos wire]} state]

(defn tap-item [wire component]
  (w/taps wire
    :mouse-double-click #(w/act wire :remove-todo)
    :mouse-click        #(show/update! component :selected not)))

(show/defclass Todo [component]
  (initial-state []
