public void loadDNSSDHelper() {
		// if (!MainDialog.isOSX())
		// return;

		Iterator<DNSSDHelperHook> providers = ServiceLoader.load(DNSSDHelperHook.class).iterator();
		List<DNSSDHelperHook> listProviders = new ArrayList<DNSSDHelperHook>();

		while (providers.hasNext()) {
			DNSSDHelperHook nextProvider = (DNSSDHelperHook) providers.next();
			listProviders.add(nextProvider);
			D.out("DNSSD hook found: " + nextProvider.getClass().getCanonicalName());
		}

		//TODO needs a better final solution
		/**
		 * depending on the number of DNSSDHelperHook implementations...<br>
		 * - if there is only a single one we take it<br>
		 * - if there are more then one we take the first alternative imlementation in the list<br>
		 * <br>
		 * That way it would be possible to use a different DNSSD implementation.<br>
		 * <br>
		 * For the case that there is more then one alternative implementation there is currently no
		 * easy way to control which one is taken (except classpath contortions, etc.).<br>
		 * Either the applications could support only one single alternative or there could be a
		 * possiblity in the properties UI to select between the alternatives.
		 */
		if (listProviders.size() == 1) {
			this.dnssdHelperHook = listProviders.get(0);
		} else {
			for (DNSSDHelperHook hook : listProviders) {
				if (hook.getClass() == DNSSDHelper.class) {
					continue;
				}
				this.dnssdHelperHook = hook;
				break;
			}
		}

		// do we have anything at least? =)

		if (this.dnssdHelperHook != null) {
			this.dnssdHelperHook.registerOurselves(MainDialog.getCurrentHTTPPort());
			this.dnssdHelperHook.setCallback(this);
		} else {
			D.out("Zeroconf: No appropriate class found");
			// D.out(System.getProperty("java.class.path"));
		}
	}