public static Node performMiniMax(Board b, int color, int depth, Response r) {
		Node root = new Node(b, Integer.MIN_VALUE);
		Node move = null;
		if (r.secondsleft > 60) {
			Future<Node> control = Executors.newSingleThreadExecutor().submit(new TimedJob(root, color, depth));

			try {
				// Try to get the result within 45 seconds
				move = control.get(45, TimeUnit.SECONDS);
			} catch (TimeoutException ex) {
				// We went over the time, cancel the job
				control.cancel(true);
			}
			catch (InterruptedException e) {
				e.printStackTrace();
			} catch (ExecutionException e) {
				e.printStackTrace();
			}
		}

		if (move == null || move.m == null) {
			System.out.println("This is null");
			move = maxValue(root, color, 4, Integer.MIN_VALUE, Integer.MAX_VALUE);
		}
		return move;
	}