   [data owner]
   (reify
     om/IRenderState
-    (render-state [_ {:keys [tax-rate depreciation command-info-channel]
+    (render-state [_ {:keys [tax-rate depreciation a p q command-info-channel]
                       :as state}]
       (dom/div
        #js {:role "form" :className "economic-model-control"}

   (< n min) min
   (> n max) max
   :else n))


(defn grid-config-view

(defn handle-int-config-change
  [e owner state key]
  (let [value (.. e -target -value)]
    (if (re-matches #"-?[0-9]+" value)
      (om/set-state! owner key (js/parseInt value))
      (om/set-state! owner key (get state key)))))

(defn handle-float-config-change
  [e owner state key]
  (let [value (.. e -target -value)]
    (if (re-matches #"-?[0-9]+(\\.[0-9]+)?" value)
      (om/set-state! owner key (js/parseFloat value))
      (om/set-state! owner key (get state key)))))

(defn navigation-button
