@Override
    public boolean isValidMove(int row, int column)
    {
        if (isOffTheBoardOrToSelf(row, column))
            return false;
        // no capturing
        if (getColumn() != column)
            return false;
        boolean isMovingForward = false;
        if (getColor() == ChessPieceColor.WHITE) {
            isMovingForward = (row == getRow() + 1);
            if (inStartingPosition())
                isMovingForward = isMovingForward || (row == getRow() + 2);
        }
        if (getColor() == ChessPieceColor.BLACK) {
            isMovingForward = (row == getRow() - 1);
            if (inStartingPosition())
                isMovingForward = isMovingForward || (row == getRow() - 2);
        }
        return isMovingForward;
    }