public BoardRec nextMoveRecurse(Board b, List<Integer> nextPiece, int depth)
	{
		if (depth == Math.min(exploreDepth, nextPiece.size()))
		{
			return new BoardRec(heuristic.useHeuristic(b));
		}			
		else{
			BoardRec ret = null;
			for (Board.Direction d : Board.Direction.values())
			{					
				Board next = b.move(d, nextPiece.get(depth));
				if (next != null){
					BoardRec temp = nextMoveRecurse(next, nextPiece, depth + 1);
					if (temp != null){
						if (ret == null)
							ret = temp.add(d);
						else if (temp.score > ret.score){
							ret = temp.add(d);
						}
					}
				}
			}
			return ret;
		}
	}