         (recur new-grid
                coords
                (conj processed-run (first coords)))))))
-
-(s/defn maze-aldous-broder-sync :- g/Grid [grid :- g/Grid]
-  (loop [grid grid
-         current (g/random-coord grid)
-         unvisited (dec (g/grid-size grid))]
-    (let [cell (g/grid-cell grid current)
-          neighbor (rand-nth (g/cell-neighbors cell))
-          neighbor-new? (empty? (:links (g/grid-cell grid neighbor)))]
-      (if (= unvisited 0)
-        (assoc grid :algorithm-name "aldous-broder")
-        (recur (if neighbor-new?
-                 (g/link-cells (g/begin-step grid) cell neighbor)
-                 grid)
-               neighbor
-               (if neighbor-new? (dec unvisited) unvisited))))))
 
 (s/defn maze-aldous-broder [grid :- g/Grid result-chan report-partial-steps?]
   (go-loop [grid (assoc grid :algorithm-name "aldous-broder")

      grid
      (g/link-cells grid cell (rand-nth neighbors)))))

(s/defn maze-binary-tree-sync :- g/Grid [grid :- g/Grid]
  (assoc (reduce binary-tree-step grid (g/grid-coords grid))
    :algorithm-name "binary-tree"))

(s/defn maze-binary-tree [grid :- g/Grid result-chan report-partial-steps?]
  (go
    (let [step-and-report (fn [g c]

                   (sidewinder-end-run grid run)
                   (g/link-cells grid cell (:east cell)))]
    [new-grid (if end-run? [] run)]))

(s/defn maze-sidewinder [grid :- g/Grid result-chan report-partial-steps?]
  (go-loop [grid (assoc grid :algorithm-name "sidewinder")
