public Board.Direction nextMove(Board start, List<Integer> nextPiece)
	{
		if (first)
		{
			first = false;
			predict(start, nextPiece);
		}
		curDepth++;
		int hardness = lookAheadHard();
		if (deathDepth - curDepth < deathCutoff) // we are soon to die, prioritise score
		{
			return deathSearch.nextMove(start, nextPiece);
		}
		else if (hardness >= hardCutoff) // there is a hard bit ahead, do more work
		{
			return hardSearch.nextMove(start, nextPiece);
		}
		else	// must be easy, do something else smart.
		{
			return easySearch.nextMove(start, nextPiece);
		}		
	}