public List<String []> collectConfig() {
		List<String []> output = new ArrayList<String []>();

		output.add(new String [] { "allow-all-ssl", (getAllowAllSSL() ? "true" : "false")});
		if (getBrainFileName() != null)
			output.add(new String [] { "predict", getBrainFileName()});
		if (getExec() != null)
			output.add(new String [] { "exec", getExec()});
		output.add(new String [] { "adapt-img", (getAdaptImageSize() ? "true" : "false")});
		output.add(new String [] { "random-img", (getRandomWebcam() ? "true" : "false")});
		output.add(new String [] { "counter", (getCounter() ? "true" : "false")});
		if (getProblemSound() != null)
			output.add(new String [] { "sound", getProblemSound()});
		output.add(new String [] { "listen-port", "" + getHTTPServerListenPort()});
		output.add(new String [] { "listen-adapter", getHTTPServerListenAdapter()});
		output.add(new String [] { "bgcolor", getBackgroundColorName()});
		if (getBackgroundColorFadeTo() != null)
			output.add(new String [] { "bgcolor-fade-to", getBackgroundColorFadeToName()});
		if (getProblemRowGradient() != null)
			output.add(new String [] { "problem-row-gradient", getProblemRowGradientName()});
		if (getPerformanceDataFileName() != null)
			output.add(new String [] { "performance-data-filename", getPerformanceDataFileName()});
		output.add(new String [] { "textcolor", getTextColorName()});
		output.add(new String [] { "warning-textcolor", getWarningTextColorName()});
		output.add(new String [] { "critical-textcolor", getCriticalTextColorName()});
		output.add(new String [] { "bgcolorok", getBackgroundColorOkStatusName()});
		output.add(new String [] { "nrows", "" + getNRows()});
		output.add(new String [] { "flexible-n-columns", (getFlexibleNColumns() ? "true" : "false")});
		output.add(new String [] { "no-problems-text-with-bg-color", (getNoProblemsTextBg() ? "true" : "false")});
		output.add(new String [] { "host-scheduled-downtime-show-services", (getHostScheduledDowntimeShowServices() ? "true" : "false")});
		output.add(new String [] { "host-acknowledged-show-services", (getHostAcknowledgedShowServices() ? "true" : "false")});
		output.add(new String [] { "host-scheduled-downtime-or-ack-show-services", (getHostSDOrAckShowServices() ? " true" : "false")});
		output.add(new String [] { "interval", "" + getSleepTime()});
		output.add(new String [] { "webcam-timeout", "" + getWebcamTimeout()});
		List<String> iu = getImageUrls();
		List<ImageUrlType> iut = getImageUrlTypes();
		for(int index=0; index<iu.size(); index++)
			output.add(new String [] { "image", iut.get(index) + " " + iu.get(index)});
		output.add(new String [] { "prefer", getPrefersList()});
		output.add(new String [] { "always-notify", (getAlwaysNotify() ? "true" : "false")});
		output.add(new String [] { "also-acknowledged", (getAlsoAcknowledged() ? "true" : "false")});
		output.add(new String [] { "display-unknown", (getDisplayUnknown() ? "true" : "false")});
		output.add(new String [] { "display-down", (getDisplayDown() ? "true" : "false")});
		output.add(new String [] { "min-row-height", "" + getMinRowHeight()});
		output.add(new String [] { "font", getFontName()});
		output.add(new String [] { "critical-font", getCriticalFontName()});
		output.add(new String [] { "warning-font", getWarningFontName()});
		output.add(new String [] { "verbose", (getVerbose() ? "true" : "false")});
		output.add(new String [] { "double-buffering", (getDoubleBuffering() ? "true" : "false")});
		output.add(new String [] { "anti-alias", (getAntiAlias() ? "true" : "false")});
		output.add(new String [] { "max-quality-graphics", (getMaxQualityGraphics() ? "true" : "false")});
		output.add(new String [] { "row-border", (getRowBorder() ? "true" : "false")});
		output.add(new String [] { "draw-problems-service-split-line", (getDrawProblemServiceSplitLine() ? "true" : "false")});
		output.add(new String [] { "row-border-color", getRowBorderColorName()});
		output.add(new String [] { "max-check-age", "" + getMaxCheckAge()});
		output.add(new String [] { "upper-row-border-height", "" + getUpperRowBorderHeight()});
		output.add(new String [] { "graph-color", getGraphColorName()});
		output.add(new String [] { "no-gui", (!getRunGui() ? "true" : "false")});
		output.add(new String [] { "fullscreen", getFullscreenName()});
		if (getUseScreen() != null && getUseScreen().equals("") == false)
			output.add(new String [] { "use-screen", getUseScreen()});
		output.add(new String [] { "reduce-textwidth", (getReduceTextWidth() ? "true" : "false")});
		if (getHeaderSet() == true)
			output.add(new String [] { "header", getHeader()});
		if (getFooter() != null)
			output.add(new String [] { "footer", getFooter()});
		output.add(new String [] { "show-header", (getShowHeader() ? "true" : "false")});
		output.add(new String [] { "scrolling-header", (getScrollingHeader() ? "true" : "false")});
		output.add(new String [] { "scrolling-footer", (getScrollingFooter() ? "true" : "false")});
		output.add(new String [] { "scroll-pixels-per-sec", "" + getScrollingPixelsPerSecond()});
		output.add(new String [] { "host-issue", getHostIssue()});
		output.add(new String [] { "service-issue", getServiceIssue()});
		output.add(new String [] { "transparency", "" + getTransparency()});
		output.add(new String [] { "header-transparency", "" + getHeaderTransparency()});
		output.add(new String [] { "hosts-filter-exclude", getHostsFilterExcludeList()});
		output.add(new String [] { "hosts-filter-include", getHostsFilterIncludeList()});
		output.add(new String [] { "services-filter-exclude", getServicesFilterExcludeList()});
		output.add(new String [] { "services-filter-include", getServicesFilterIncludeList()});
		output.add(new String [] { "scroll-if-not-fitting", (getScrollIfNotFit() ? "true" : "false")});
		output.add(new String [] { "splitter", getLineScrollSplitterString()});
		output.add(new String [] { "counter-position", getCounterPositionName()});
		output.add(new String [] { "sparkline-width", "" + getSparkLineWidth()});
		output.add(new String [] { "header-always-bgcolor", (getHeaderAlwaysBGColor() ? "true" : "false")});
		if (getLogo() != null)
			output.add(new String [] { "logo", getLogo()});
		if (getLogoPosition() != null)
			output.add(new String [] { "logo-position", getLogoPositionName()});
		output.add(new String [] { "web-expire-time", "" + getWebSessionExpire()});
		if (getLatencyFile() != null)
			output.add(new String [] { "latency-file", getLatencyFile()});
		if (getNoProblemsText() != null)
			output.add(new String [] { "no-problems-text", getNoProblemsText()});
		if (getStateProblemsText() != null)
			output.add(new String [] { "state-problems-text", getStateProblemsText()});
		output.add(new String [] { "no-problems-text-position", getNoProblemsTextPositionName()});
		String sparkMode = "";
		if (getSparklineGraphMode() == SparklineGraphMode.AVG_SD)
			sparkMode += "avg-sd";
		else if (getSparklineGraphMode() == SparklineGraphMode.MIN_MAX)
			sparkMode += "min-max";
		output.add(new String [] { "sparkline-graph-mode", sparkMode });
		String sort = "";
		if (getSortOrderNumeric())
			sort += "numeric ";
		if (getSortOrderReverse())
			sort += "reverse ";
		sort += getSortOrder();
		output.add(new String [] { "sort-order", sort});
		output.add(new String [] { "also-scheduled-downtime", (getAlsoScheduledDowntime() ? "true" : "false")});
		output.add(new String [] { "also-soft-state", (getAlsoSoftState() ? "true" : "false")});
		output.add(new String [] { "also-disabled-active-checks", (getAlsoDisabledActiveChecks() ? "true" : "false")});
		output.add(new String [] { "show-services-for-host-with-problems", (getShowServicesForHostWithProblems() ? "true" : "false")});
		output.add(new String [] { "show-flapping", (getShowFlapping() ? "true" : "false")});
		output.add(new String [] { "show-flapping-icon", (getShowFlappingIcon() ? "true" : "false")});
		output.add(new String [] { "flash", "" + getFlash()});
		output.add(new String [] { "problem-columns", "" + getNProblemCols()});
		if (getWebUsername() != null)
			output.add(new String [] { "web-username", getWebUsername()});
		if (getWebPassword() != null)
			output.add(new String [] { "web-password", getWebPassword()});
		if (ldapBaseDn != null)
			output.add(new String [] { "ldap-base-dn", ldapBaseDn});
		if (ldapUrl != null)
			output.add(new String [] { "ldap-url", ldapUrl});

		for(NagiosDataSource dataSource : getNagiosDataSources())
		{
			String type = "?";
			if (dataSource.getType() == NagiosDataSourceType.TCP)
				type = "tcp";
			else if (dataSource.getType() == NagiosDataSourceType.ZTCP)
				type = "ztcp";
			else if (dataSource.getType() == NagiosDataSourceType.LS)
				type = "ls";
			else if (dataSource.getType() == NagiosDataSourceType.HTTP)
				type = "http";
			else if (dataSource.getType() == NagiosDataSourceType.FILE)
				type = "file";

			String version = "?";
			if (dataSource.getVersion() == NagiosVersion.V1)
				version = "1";
			else if (dataSource.getVersion() == NagiosVersion.V2)
				version = "2";
			else if (dataSource.getVersion() == NagiosVersion.V3)
				version = "3";

			String parameters = "?";
			if (dataSource.getType() == NagiosDataSourceType.TCP || dataSource.getType() == NagiosDataSourceType.ZTCP || dataSource.getType() == NagiosDataSourceType.LS)
				parameters = dataSource.getHost() + " " + dataSource.getPort();
			else if (dataSource.getType() == NagiosDataSourceType.HTTP)
			{
				parameters = dataSource.getURL().toString();
				if (dataSource.getUsername() != null && dataSource.getPassword() != null)
				{
					parameters += " " + dataSource.getUsername() + " " + dataSource.getPassword();
					type = "http-auth";
				}
			}
			else if (dataSource.getType() == NagiosDataSourceType.FILE)
				parameters = dataSource.getFile();

			output.add(new String [] { "source", type + " " + version + " " + parameters});
		}

		output.add(new String [] { "cam-rows", "" + getCamRows()});
		output.add(new String [] { "cam-cols", "" + getCamCols()});
		output.add(new String [] { "ignore-aspect-ratio", (!getKeepAspectRatio() ? "true" : "false")});
		output.add(new String [] { "warning-bg-color", getWarningBgColorName()});
		output.add(new String [] { "critical-bg-color", getCriticalBgColorName()});
		output.add(new String [] { "warning-bg-color-soft", getWarningBgColorNameSoft()});
		output.add(new String [] { "critical-bg-color-soft", getCriticalBgColorNameSoft()});
		output.add(new String [] { "nagios-unknown-bg-color", getNagiosUnknownBgColorName()});
		output.add(new String [] { "disable-http-compression", (!getAllowHTTPCompression() ? "true" : "false")});
		output.add(new String [] { "color-bg-to-state", (getSetBgColorToState() ? "true" : "false")});

		if (getProxyHost() != null) {
			output.add(new String [] { "proxy-host", getProxyHost()});
			output.add(new String [] { "proxy-port", "" + getProxyPort()});
		}

		return output;
	}