public ArrayList<Move> getPossibleMoves()
	{
		ArrayList<Move> possibleMoves = new ArrayList<Move>();
		
		int orientation = getLoyalty() == Loyalty.RED ? 1 : -1;
		
		for(int i = - 1; i <= 1; i += 2)
		{
			Location currentLoc = new Location(getLoc().getRow() + orientation, getLoc().getCol() + i);
			
			if(getBoard().isValid(currentLoc))
			{
				if(getBoard().getPiece(currentLoc) == null)
				{
					ArrayList<Node> move = new ArrayList<Node>();
					move.add(getNode());
					move.add(getBoard().getNode(currentLoc));
					
					possibleMoves.add(new CheckersMove(move, getBoard(), getLoyalty()));
				}
			}
		}
		
		ArrayList<Move> jumpMoves = new ArrayList<Move>();
		
		for(ArrayList<Node> move : getNextJumps(getLoc()))
		{
			if(move.size() > 1)
			{
				jumpMoves.add(new CheckersMove(move, getBoard(), getLoyalty()));
				possibleMoves.add(new CheckersMove(move, getBoard(), getLoyalty()));
			}
		}
		
		if(jumpMoves.size() > 0)
		{
			return jumpMoves;
		}
		else
		{
			return possibleMoves;
		}
	}