 
     /// Executes a move without checking the legality of the move.
     private func _execute(uncheckedMove move: Move, promotion: @noescape () -> Piece.Kind) throws {
-        let piece = board[move.start]!
+        guard let piece = board[move.start] else {
+            throw ExecutionError.missingPiece(move.start)
+        }
         var endPiece = piece
         var capture = board[move.end]
         var captureSquare = move.end

    /// Thrown by the `execute(move:promotion:)` method for a `Game` instance.
    public enum ExecutionError: ErrorProtocol {

        /// Attempted illegal move.
        case illegalMove(Move, Color, Board)


    /// Thrown by the `execute(move:promotion:)` method for a `Game` instance.
    public enum ExecutionError: ErrorType {

        /// Missing piece at a square.
        case MissingPiece(Square)

        /// Attempted illegal move.
        case IllegalMove(Move, Color, Board)

