            goog.net.EventType))
 
 (defonce app-state (atom {:stream nil
+                          :random (rand 10)
                           :current nil
                           :initial-value ""
                           :reduction ""
                           :projections []
+                          :active-page "Dashboard"
                           :new-projection false}))
 (defonce localhost (let [href (.-href (.-location js/window))]
                      (clojure.string/join

        (dom/div
            #js {:className "new-projection"}
            (dom/h1 #js {:className "view-title"} "New Projection")
            (dom/div
                #js {:className "box"}
              (dom/div
                  nil
                (dom/label #js {:className "input-label"} "Projection name")
                (dom/input
                    #js {:className "wide-input"
                         :type "text" :ref "name"
                         :value (:projection-name data)
                         :onChange
                         (fn [ev]
                           (om/update! data :projection-name
                                       (.-value (.-target ev))))}))
              (dom/div
                  nil
                (dom/label #js {:className "input-label"} "Stream name")
                (dom/input
                    #js {:className "wide-input"
                         :type "text" :ref "name"

                                                (.-textContent (.-target ev)))
                                    (update-box owner "code-box"))}
                             (:reduction data))))
              (dom/div nil
                (dom/button
                    #js {:onClick
                         (fn [_]
