       (apply
        dom/div nil
        (om/build-all row grid {:init-state state})))))
+
+(defn table-cell [ctx owner]
+  (reify
+    om/IRenderState
+    (render-state [this state]
+      (dom/td nil
+              (om/build editable-input ctx))
+  )))
+
+(defn table-row [row owner]
+  (reify
+    om/IRenderState
+    (render-state [this state]
+      (apply
+       dom/tr nil
+       (om/build-all table-cell row)))))
+
+(defn grid-table [grid owner]
+  (reify
+    om/IRenderState
+    (render-state [this state]
+      (dom/table #js {:className "grid-table"}
+                 (apply
+                  dom/tbody nil
+                  (om/build-all table-row grid)
+                  )
+                            ))
+    ))
+
+(defn design-view [app owner]
+  (reify
+    om/IRenderState
+    (render-state [this state]
+      (om/build grid-table (:grid app))
+      )))
 
 (defn status-bar [app owner]
   (reify

    )
  )

(def default-data {
                      :hero {:dx 0
                             :dy 0
                             :life 100
                             :position (hero-start-position grid-content)
                             :bounce 10
                             :game-won false
                             }
                      :design-game false
                      :foo ["bar"]
                      :grid grid-content})

(def app-state (local-storage (atom default-data) "game"))

    )
  )

(defn add-event-listeners [app]
  #js {:className "grid" :tabIndex 0 :onKeyUp (fn [e] (stop-moving e app)) :onKeyDown (fn [e] (start-moving e app) (.preventDefault e))}
  )

(defn main []
  (om/root
   (fn [app owner]
