 
       ;; routing loop
       (go (loop []
-            (let [id (<! (om/get-state owner :current-item))]
+            (let [id (<! (om/get-state owner :navigate))]
               (cond
                (= id :new)
                (do

            (dom/button
             #js {:id "add-item"
                  :className "button"
                  :onClick (fn [e] (put! current-item :new))}
             "Add")

            (dom/button
             #js {:id "search-item"
                  :className "button"
                  :onClick (fn [e] (put! current-item :search))}
             "Search"))
          
          (dom/div nil
            (case (first (:route app))
                      ;; what need? XXX
              :add-item (om/build item-add-view (:current-item app) opts)
              ;; why bring current-item here?
              :search-item (om/build search-view (:items app)  opts)
              ;;:list-items (om/build items-view (:items app) opts)
              :view-item (om/build item-view (:current-item app) opts))))))))

(util/edn-xhr

;; =============================================================================
;; Components

(defn item-view [item owner {:keys [navigate event]}]
  (reify
    om/IRender
    (render [_]
