docs: private static boolean parseOptions(String[] args, Map options)
  	{
  		if (args.length == 0) {
  			System.out.println("A tool for monitoring a KNX network");
  			showVersion();
  			System.out.println("type -help for help message");
  			return false;
  		}
  		// add defaults
  		options.put("port", new Integer(KNXnetIPConnection.IP_PORT));
  		options.put("medium", TPSettings.TP1);
  
  		int i = 0;
  		for (; i < args.length; i++) {
  			final String arg = args[i];
  			if (isOption(arg, "-help", "-h")) {
  				showUsage();
  				return false;
  			}
  			if (isOption(arg, "-version", null)) {
  				showVersion();
  				return false;
  			}
  			if (isOption(arg, "-verbose", "-v"))
  				options.put("verbose", null);
  			else if (isOption(arg, "-localhost", null))
  				parseHost(args[++i], true, options);
  			else if (isOption(arg, "-localport", null))
  				options.put("localport", Integer.decode(args[++i]));
  			else if (isOption(arg, "-port", "-p"))
  				options.put("port", Integer.decode(args[++i]));
  			else if (isOption(arg, "-nat", "-n"))
  				options.put("nat", null);
  			else if (isOption(arg, "-serial", "-s"))
  				options.put("serial", null);
  			else if (isOption(arg, "-medium", "-m"))
  				options.put("medium", getMedium(args[++i]));
  			else if (options.containsKey("serial"))
  				// add port number/identifier to serial option
  				options.put("serial", arg);
  			else if (!options.containsKey("host"))
  				parseHost(arg, false, options);
  			else
  				throw new IllegalArgumentException("unknown option " + arg);
  		}
  		return true;
  	}