         (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/div #js {:className "box"}
+              (dom/div nil
+                (label "Projection name")
+                (input (:projection-name data)
+                       (fn [ev]
+                         (om/update! data :projection-name
+                                     (.-value (.-target ev))))))
+              (dom/div nil
+                (label "Stream name")
                 (dom/input
                     #js {:className "wide-input"
                          :type "text" :ref "name"

           goog.net.EventType))

(defonce app-state (atom {:stream nil
                          :current nil
                          :initial-value ""
                          :reduction ""
                          :projections []
                          :new-projection false}))
(defonce localhost (let [href (.-href (.-location js/window))]
                     (clojure.string/join


(defn update-box [owner box-ref]
  (.highlightBlock js/hljs (om/get-node owner box-ref)))

(defn label [text]
  (dom/label #js {:className "input-label"} text))

(defn input [value fn-update]
  (dom/input
      #js {:className "wide-input"
           :type "text" :ref "name"
           :value value
           :onChange fn-update}))

(defn widget-new-projection [params owner]
  (let [data (:data params)]
