@Override
    public void executeMove(ChessBoard board) {
        promoted_coin = null;

        if (option == NOT_DEFINED) {
//            PromotionDialog temp = new PromotionDialog(null, true);
//            temp.setVisible(true);
//            option = temp.getOption();
        }
        switch (option) {
            case QUEEN: {
                promoted_coin = (color == CoinColor.WHITE) ? new WhiteQueen() : new BlackQueen();
                break;
            }
            case ROOK: {
                promoted_coin = (color == CoinColor.WHITE) ? new WhiteRook() : new BlackRook();
                break;
            }
            case KNIGHT: {
                promoted_coin = (color == CoinColor.WHITE) ? new WhiteKnight() : new BlackKnight();
                break;
            }
            case BISHOP: {
                promoted_coin = (color == CoinColor.WHITE) ? new WhiteBishop() : new BlackBishop();
                break;
            }
        }
        board.setCoinAt(Coin.Empty, start);
        board.setCoinAt(promoted_coin, end);
        moved.Moved();
        promoted_coin.Moved();
    }