@Override
    public ArrayList<BoardPosition> getPossibleMoves(Board board, BoardPosition startingPosition) {
        //replace with enpassant - b/c pawn cannot capture when going forward
        ArrayList<BoardPosition> possibleMoves = new ArrayList<BoardPosition>();
        PawnStraightMove forward = new PawnStraightMove();
        PawnCapture rightCapture = new PawnCapture();
        PawnCapture leftCapture = new PawnCapture();

        int moveLength = 1;
        if ((startingPosition.getRow() == 1 && getColor() == Board.BLACK_COLOR )
             || (startingPosition.getRow() == 6 && getColor() == Board.WHITE_COLOR)) {
            moveLength = 2;
        }
        if (getColor() == Board.BLACK_COLOR) {
            BoardPosition forwardDestination = new BoardPosition(startingPosition.getColumn(),
                                                          startingPosition.getRow() + moveLength);
            BoardPosition rightDestination = new BoardPosition(startingPosition.getColumn() + 1,
                                                          startingPosition.getRow() + 1);
            BoardPosition leftDestination = new BoardPosition(startingPosition.getColumn() - 1,
                                                          startingPosition.getRow() + 1);

            forward.setDestination(startingPosition,forwardDestination , getColor());
            rightCapture.setDestination(startingPosition, rightDestination, getColor());
            leftCapture.setDestination(startingPosition, leftDestination, getColor());
        } else {
            BoardPosition destination = new BoardPosition(startingPosition.getColumn(),
                                                          startingPosition.getRow() - moveLength);
            BoardPosition rightDestination = new BoardPosition(startingPosition.getColumn() + 1,
                                                                startingPosition.getRow() - 1);
            BoardPosition leftDestination = new BoardPosition(startingPosition.getColumn() - 1,
                                                                startingPosition.getRow() - 1);

            forward.setDestination(startingPosition, destination, getColor());
            rightCapture.setDestination(startingPosition, rightDestination, getColor());
            leftCapture.setDestination(startingPosition, leftDestination, getColor());
        }

        try {
        possibleMoves.addAll(forward.getPossibleDestinations(board));
        } catch (ArrayIndexOutOfBoundsException e) { }

        try {
            possibleMoves.addAll(rightCapture.getPossibleDestinations(board));
        } catch (ArrayIndexOutOfBoundsException e) {
            //do nothing
        }

        try {
        possibleMoves.addAll(leftCapture.getPossibleDestinations(board));
        } catch (ArrayIndexOutOfBoundsException e) {
            //do nothing
        }



        return possibleMoves;
    }