     om/IRenderState
     (render-state [_ {:keys [comm]}]
       (dom/header nil
-        (dom/div nil (dom/button #js {:id "back-button" :className "transparent-button" :onClick #(.back js/history)} "Back"))
+        (dom/div nil (dom/button #js {:id "back-button" :className "transparent-button" :onClick #(put! comm [:navigate :up])} "Back"))
         (dom/div nil (dom/div #js {:id "header-title"} (if-let [current-channel (:current-channel app)]
                                                          (:title (find-in-vec [:id] current-channel (:channels app)))
                                                          "Virt")))


(defn handle-event [msg value]
  (case msg
    :navigate (.setToken history value)
    nil))

(defn main [app owner]

(defroute ":channel-id" [channel-id]
  (swap! app-state assoc :current-channel (cljs.reader/read-string channel-id)))

(def navigate
  (let [history (Html5History.)]
    (.setUseFragment history false)
    (.setEnabled history true)
    (events/listen history EventType.NAVIGATE
      (fn [e] (secretary/dispatch! (.-token e))))
    (fn [to]
      (case to
        :up (.setToken history "")
        (.setToken history to)))))


(defn list-item [item owner]
