             [om.dom :as dom :include-macros true]
             [cljs.core.async :refer [put! chan <!]]))
 
+;; TODO: Move this else where, just data.
 (def basic-list
   "come get give go keep let make put seem take be do have say see
   send may will about across after against among at before between by

    (render-state [this state]
      (dom/div nil
               #_(dom/h1 nil (str (:text app) " " (:count state)))
               (dom/textarea #js
                              {:value (:text state)
                               :ref "new-item"
                               :rows "12" :cols "80"
                               :onChange #(handle-change % owner state)})
               (dom/button #js
                            {:onClick #(add-item app owner)} "Add item")
               (apply dom/ul nil
                      (om/build-all item-view (:items app)))))))

(defn main []
  (om/root app-view

;; then merge
;; should be elsewhere?

#_(defn item-view [item owner]
  (reify
    om/IRender
    (render [this]
      (dom/li nil
              (apply dom/div nil
                     (str (:text item))
                     (str (naive-key-extractor item) ", ")
                     #_(prepare-item item))))))

(defn visible-item-view [item owner]
  (reify
    om/IRender
    (render [this]
      (dom/li nil
              (apply dom/div nil
                     (str (second item)))))))

(defn app-view [app owner]
  (reify
