                   (om/transact! data [:channels] (fn [cs] (conj cs (:body response))))
                   (put! comm [:navigate [:back]]))
                 (>! core-comm [msg msg-data])))))))
-    om/IWillUnmount
-    (will-unmount [_]
-      (js/clearInterval (om/get-state owner :poll-interval)))
     om/IRenderState
     (render-state [_ {:keys [comm]}]
       (let [m {:init-state {:comm comm}}]
-        (if (om/get-state owner :loading)
-          (om/build loading nil)
-          (case page
-            ::new (om/build new-channel nil m)
-            ::home (om/build channel-list {:params params :data (:channels data)} m)))))))
+        (case page
+          ::new (om/build new-channel nil m)
+          ::home (om/build channel-list {:params params :data data} m))))))


(defn channel-list [{:keys [params data]} owner]
  (reify
    om/IRenderState
    (render-state [_ {:keys [comm]}]
      (dom/div nil
        (apply dom/ul #js {:className "virt-list"}
          (om/build-all list-item data {:init-state {:comm comm}}))))))

(defn new-channel [_ owner]
  (reify

  (reify
    om/IInitState
    (init-state [_]
      {:comm (chan)})
    om/IWillMount
    (will-mount [_]
      (let [comm (om/get-state owner :comm)
            core-comm (om/get-state owner :core-comm)]
        (go
          (while true
            (let [[msg msg-data] (<! comm)]
              (case msg
