    }
 
    func stopPlaying() {
-      if step < solution!.numMoves {
+      if step < solution.numMoves {
          step += 1
       }
       displayBoardAtStep(step)

   func moveBlock(index:Int, duration: Double, delay: Double, isBack: Bool) {
      // Note that here move is of type SolutionMove and moves is of type
      // [SolutionMove]
      let moves = solution!.moves
      let move = moves[index]
      let col = isBack ? move.colBack : move.colFwd
      let row = isBack ? move.rowBack : move.rowFwd

      var statsText = ""
      if state == .noSolutionExists {
         statsText += "The puzzle was determined to be unsolvable after checking "
         statsText += "levels 0 to \(solution.numMoves) in "
      } else {
         statsText += "A solution was found at level \(solution.numMoves) in "
      }
      statsText += "\(String(format: "%.2f", solution.timeInterval)) seconds. "
      statsText += "Maximum queue size was \(solution.maxQSize) entries "
      statsText += "and final dictionary size was "
      statsText += "\(solution.numBoardsEnqueued) entries.\n\n"

      statsText += "Boards".rightAlign(inWidth: 17)
      statsText += "Boards".rightAlign(inWidth: 11)+"\n"
