              (let [new-maze (async/<! intermediate-chan)]
                (if new-maze
                  (do
-                   (om/transact! reconciler `[(snergly.core/set-maze {:maze-key :grid :value ~(atom new-maze)})])
+                   (set-maze-param! :grid (atom new-maze))
                    (async/<! (async/timeout 1))
                    (recur))
                  (let [maze (async/<! result-chan)]
-                   (om/transact! reconciler `[(snergly.core/set-maze {:maze-key :grid :value ~(atom maze)})])))))))
+                   (set-maze-param! :grid (atom maze))))))))
 
 (defn run-animation [maze-params]
   (go
     (let [maze (async/<! (produce-maze-async maze-params))
           ; maze (async/<! (produce-analysis-async maze maze-params))
-          ])))
+          ]
+      (set-maze-param! :active nil))))
 
 ;; -----------------------------------------------------------------------------
 ;; Parsing

          (dom/label nil
                     "Algorithm: "
                     (dom/select #js {:value algorithm
                                      :onChange (partial modify :algorithm)}
                                 (concat [(dom/option #js {:key ""} "")]
                                         (map

                                       :onInput (partial modify :end-col)}))))
        (dom/div
          nil
          (dom/button #js {:disabled (or active (not (ready-to-go maze)))
                           :onClick (partial go-async maze)}
                      "Go!"))
        (when grid (dom/div nil (maze-display maze)))
