private void fillGroup(Field[] fields, int groupsLeft) {
		/* Determine how much Svetovids should be inserted 
		 * in group. There always must be at least one and
		 * less than svLeft - groupsLeft. Value is random 
		 * generated in this scope unless it is last group,
		 * than all left Svetovids should be inserted. 
		 * Also value cannot be grater then group length*/
		int svInGroup = 1;
		if (groupsLeft > 0) {
			svInGroup = Utils.getRandomInRange(1, Math.min(svLeft - groupsLeft, fields.length));
			/*If it is obvious that last group will contain
			 * more than can fit add more Svetovids at this 
			 * point.*/
			while (svInGroup < fields.length && (double) groupsLeft < ((double) svLeft / (double) fields.length)) {
				svInGroup++;
			}
		} else {
			svInGroup = svLeft;
		}
		for (int i = 0; i < svInGroup; i++) {
			int power = 1;
			/* Same here, if there are more Svetovids left
			 * generate random power, but if it is last one,
			 * use all remained power.*/
			if (svLeft > 1) {
				// Max power cannot be grater than remained free fields
				int maxPower = maxSvPower > seenFldsLeft ? seenFldsLeft : maxSvPower;
				// Also it must be enough power for next Svetovids
				maxPower = Math.min(maxPower, (1 + seenFldsLeft - svLeft));
				power = Utils.getRandomInRange(1, maxPower);
			} else {
				power = seenFldsLeft;
			}
			seenFldsLeft = seenFldsLeft - power;
			// Create and try to insert Svetovid.
			while (true) {
				int position = Utils.getRandomInRange(0, fields.length - 1);
				// If field is not occupied insert Svetovid and break infinite
				// loop
				if (fields[position].getOccupiedBy() == null) {
						Svetovid svetovid = new Svetovid(power);
						fields[position].setOccupiedBy(svetovid);
						svetovid.setLocation(fields[position]);
						break;
				}
			}
			svLeft--;
		}
	}