public Board recursiveMoveStarter(boolean recurse) {
		int recursiveDepth = 4;
		if (!recurse) {
			Evaluator ev = new Evaluator(b, color);
			HashMap<Integer, Move> meMoves = ev.evaluateAllMoves();
			int bestMoveSoFar = 0;
			Move highValueMove = bestMoveFinder.defendMyKing(color);
			for (Entry<Integer, Move> e : meMoves.entrySet()) {
				if (e.getKey() > bestMoveSoFar) {
					bestMoveSoFar = e.getKey();
					highValueMove = e.getValue();

				}
			}
			// System.out.println(highValueMove.toString());
			b = makeMove(b, highValueMove);
			return b;
		}
		Evaluator ev = new Evaluator(b, color);
		HashMap<Integer, Move> meMoves = ev.evaluateAllMoves();
		int bestMoveSoFar = 0;
		Move highValueMove = bestMoveFinder.defendMyKing(color);
		for (Entry<Integer, Move> e : meMoves.entrySet()) {
			if (e.getKey() + recursiveMove(makeMove(b, e.getValue()), recursiveDepth) > bestMoveSoFar) {
				bestMoveSoFar = e.getKey();
				highValueMove = e.getValue();

			}
		}
		System.out.println(highValueMove.toString());
		b = makeMove(b, highValueMove);
		return b;
	}