             .debug("reset tap")
             .startWith()
         
+        // MARK: Cell clickstreams
         let clicks$: Array<Observable<(uiElement: UIButton, position: Position)>> = cells.reduce([], { result, cell in
             return result +
                 [cell.uiElement.rx.tap

            .takeUntil(Observable.combineLatest(winner$, tie$))
            .subscribe()
        
        
        // perform a render of the entire new game state
        // explicitly discard any return values by using `_`
        _ = gameState$

    override func viewDidLoad() {
        super.viewDidLoad()
        
        // MARK: Setup
        self.cells = [
            Cell(uiElement: pieceTL, position: Position(x: 0, y: 0)),
            Cell(uiElement: pieceTC, position: Position(x: 1, y: 0)),
