     ///
     /// - throws: `ExecutionError` if `move` is illegal.
     public func execute(move: Move) throws {
-        try execute(move: move, promotion: Piece(queen: playerTurn))
+        try execute(move: move, promotion: ._queen)
     }
 
     #else

            board[capture][captureSquare] = true
        }
        if let promotion = promotion {
            board[promotion][move.end] = false
        }
        board[piece][move.end] = false
        board[piece][move.start] = true

        if piece.kind.isPawn {
            if move.end.rank == Rank(endFor: playerTurn) {
                let promotion = promotion()
                guard promotion.canPromote() else {
                    throw ExecutionError.InvalidPromotion(promotion)
                }
                endPiece = Piece(kind: promotion, color: playerTurn)
            } else if move.end == enPassantTarget {
                capture = Piece(pawn: playerTurn.inverse())
                captureSquare = Square(file: move.end.file, rank: move.start.rank)
