          messageLabel.text = invalidImageMessage
       } else if state == .noSolutionExists {
          let fullMessage = "\n    \(noSolutionExistsMessage)    \n"
-            + "    Halted at level \(solution!.numMoves).\n"
+            + "    Halted at level \(solution.numMoves).\n"
          messageLabel.textColor = Const.urgentMessageLabelColor
          messageLabel.text = fullMessage
       } else {


   @IBAction func stepForward() {
      guard isOperation(.stepForward, ValidForState: state) else {return}
      assert (step < solution!.moves.count)
      moveBlock(index: step,
                duration: Const.blockViewAnimationDuration,
                delay: 0.0,
                isBack: false)
      step += 1
      if step == solution!.moves.count {
         state = .atLastStep
      } else {
         state = .atOtherStep

      statsText += "Examined".rightAlign(inWidth: 10)
      statsText += "Enqueued".rightAlign(inWidth: 11)+"\n\n"

      for index in 0...solution.numMoves {
         statsText += String(index).rightAlign(inWidth: 7)
         statsText += String(solution.numBoardsExaminedAtLevel[index]).rightAlign(inWidth: 10)
         statsText += String(solution.numBoardsEnqueuedAtLevel[index]).rightAlign(inWidth: 10)+"\n"
      }

      statsText += "\n" + "Totals:".rightAlign(inWidth: 8)
      statsText += String(solution.numBoardsExamined).rightAlign(inWidth: 9)
      statsText += String(solution.numBoardsEnqueued).rightAlign(inWidth: 10) + "\n"

      statsText += "\n" + "Per sec:".rightAlign(inWidth: 8)

      var value = Double(solution.numBoardsExamined)/solution.timeInterval
      statsText +=  String(format: "%9.f", value)

      value = Double(solution.numBoardsEnqueued)/solution.timeInterval
      statsText += String(format: "%10.f", value) + "\n"

      value = Double(solution.numBoardsExamined) / Double(solution.numBoardsEnqueued)
      statsText += "\nExamined/Enqueued = "
      statsText += String(format: "%.1f", value) + "\n"

