private OperatingSystem(Manufacturer manufacturer, OperatingSystem parent, int versionId, String name, String[] aliases,
		 String[] exclude, DeviceType deviceType, String versionRegexString) {
		this.manufacturer = manufacturer;
		this.parent = parent;
		this.children = new ArrayList<OperatingSystem>();
		// combine manufacturer and version id to one unique id. 
		this.id =  (short) ( ( manufacturer.getId() << 8) + (byte) versionId);
		this.name = name;
		this.aliases = aliases;
		this.excludeList = exclude;
		this.deviceType = deviceType;
		if (versionRegexString != null) { // not implemented yet
			this.versionRegEx = Pattern.compile(versionRegexString);
		}
		if (this.parent == null)
			addTopLevelOperatingSystem(this);
		else
			this.parent.children.add(this);
	}