   }
 
   func reset() {
-    assert(board != nil && model != nil)
-    let b = board!
-    let m = model!
+    assert(board != nil)
+    let b = board!
     b.reset()
-    m.reset()
-    m.insertTileAtRandomLocation(2)
-    m.insertTileAtRandomLocation(2)
+    model.reset()
+    model.insertTileAtRandomLocation(2)
+    model.insertTileAtRandomLocation(2)
   }
 
   func setupGame() {

    view.addSubview(scoreView)
    self.scoreView = scoreView

    assert(model != nil)
    let m = model!
    m.insertTileAtRandomLocation(2)
    m.insertTileAtRandomLocation(2)
  }

  // Misc
  func followUp() {
    assert(model != nil)
    let m = model!
    let (userWon, _) = m.userHasWon()
    if userWon {
      // TODO: alert delegate we won
      let alertView = UIAlertView()


  @objc(right:)
  func rightCommand(r: UIGestureRecognizer!) {
    model.queueMove(MoveDirection.Right,
      completion: { (changed: Bool) -> () in
        if changed {
          self.followUp()
