private void loadNagiosDataLiveStatus_hosts(String host, int port, String prettyName) throws Exception {
		Socket socket = connectToSocket(host, port);
		BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
		BufferedWriter out = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));

		String [][] map = {
			{ "accept_passive_checks", "passive_checks_enabled" },
			{ "acknowledged", "problem_has_been_acknowledged" },
			{ "acknowledgement_type", "acknowledgement_type" },
			{ "active_checks_enabled", "active_checks_enabled" },
			{ "check_command", "check_command" },
			{ "check_interval", "check_interval" },
			{ "check_options", "check_options" },
			{ "check_period", "check_period" },
			{ "check_type", "check_type" },
			{ "current_attempt", "current_attempt" },
			{ "flap_detection_enabled", "flap_detection_enabled" },
			{ "has_been_checked", "has_been_checked" },
			{ "is_flapping", "is_flapping" },
			{ "last_check", "last_check" },
			{ "last_hard_state", "last_hard_state" },
			{ "last_hard_state_change", "last_hard_state_change" },
			{ "last_notification", "last_notification" },
			{ "last_state_change", "last_state_change" },
			{ "long_plugin_output", "long_plugin_output" },
			{ "name", "host_name" },
			{ "next_check", "next_check" },
			{ "next_notification", "next_notification" },
			{ "notification_period", "notification_period" },
			{ "notifications_enabled", "notifications_enabled" },
			{ "obsess_over_host", "obsess_over_host" },
			{ "percent_state_change", "percent_state_change" },
			{ "perf_data", "performance_data" },
			{ "plugin_output", "plugin_output" },
			{ "process_performance_data", "process_performance_data" },
			{ "retry_interval", "retry_interval" },
			{ "scheduled_downtime_depth", "scheduled_downtime_depth" },
			{ "state", "current_state" },
			{ "state_type", "state_type" }
		};

		String request = "GET hosts\nSeparators: 10 124 44 125\nColumns:";
		int nameIndex = -1;
		int nFieldsRequested = 0, index = 0;
		for(String [] curMapEntry : map) {
			if (curMapEntry[0].equals("name")) {
				nameIndex = index;
			}
			request += " " + curMapEntry[0];
			nFieldsRequested++;
			index++;
		}
		if (nameIndex == -1)
			throw new Exception("Cannot parse LiveStatus stream: 'name' missing");
		request += "\n";
		out.write(request, 0, request.length());
		out.flush();
		socket.shutdownOutput();

		if (prettyName == null)
			prettyName = host;

		for(;;) {
			String line = in.readLine();
			if (line == null)
				break;

			String [] fieldsCur = line.split("\\|");
			System.out.println("hostline: " + line);
			if (nameIndex >= fieldsCur.length)
				throw new Exception("LiveStatus data mallformed?");
			System.out.println("Adding host: " + fieldsCur[nameIndex]);
			Host hostObj = addAndOrFindHost(prettyName, fieldsCur[nameIndex]);

			int fieldIndex = 0;
			for(String [] mapEntry : map) {
				addHostParameterEntry(hostObj, mapEntry[1], fieldsCur[fieldIndex]);
				fieldIndex++;
			}
		}
	}