         (>= c 2) (assoc :middle middle)))))
 
 (defn add-contact [app owner]
-  (let [new-contact (-> (om/get-node owner "new-contact")
+  (let [input (om/get-node owner "new-contact")
+        new-contact (-> input
                         .-value
                         parse-contact)]
     (when new-contact
-      (om/transact! app :contacts #(conj % new-contact)))))
+      (om/transact! app :contacts #(conj % new-contact))
+      (set! (.-value input) "")
+      )))
 
 (defn middle-name [{:keys [middle middle-initial]}]
   (cond

  (reify
    om/IInitState
    (init-state [_]
      {:delete (chan)})
    om/IWillMount
    (will-mount [_]
      (let [delete (om/get-state owner :delete)]

        (dom/h2 nil "Contact list")
        (apply dom/ul nil
          (om/build-all contact-view (:contacts app)
            {:init-state {:delete delete}}))
        (dom/div nil
          (dom/input #js {:type "text" :ref "new-contact"})
          (dom/button #js {:onClick #(add-contact app owner)} "Add contact"))
        ))))

(defn main []
(om/root
