@Override
	public Coordinate determineMove(Board board, Mark mark) {
		Coordinate move;
		LinkedList<Coordinate> allowedMoves = board.getAllowedFields(mark); 
		int currentFields = board.countFields(mark);
		int bestFields =  currentFields;
		Coordinate bestMove = null;
		long endTime = System.currentTimeMillis() + timeLimit * 1000;
		
		for (Coordinate coord : allowedMoves) {
			Board testboard = board.deepCopy();
			testboard.setField(coord, mark);
			if (bestFields < testboard.countFields(mark)) {
				bestFields = testboard.countFields(mark);
				bestMove = coord;
			}
			if (timeLimit > 0 && System.currentTimeMillis() > endTime) {
				break;
			}
		}
		
		if (bestMove == null) {
			bestMove = new NaiveStrategy().determineMove(board, mark);
		}
		
		move = bestMove;
		return move;
	}