public void setSetting(String group, String name, String value) {
		String compiledName = group + "." + name;
		this.settings.put(compiledName, value);
		
		try {
			Element propertiesElem = getOrCreateCollection("properties");
			Node setting = Utilities.selectSingleNode(propertiesElem, "./c:property[@c:name='" + compiledName + "']", this.namespaces);
			
			if(setting == null) {
				setting = Utilities.createElement(propertiesElem, "c", "property", this.namespaces);
				Utilities.setAttribute(setting, "c", "name", compiledName, this.namespaces);
				
				propertiesElem.appendChild(setting);
			}
			
			CDATASection section = null;
			Node first = setting.getFirstChild();
			if(first != null) {
				if(first.getNodeType() == Node.CDATA_SECTION_NODE) {
					section = (CDATASection) first;
				}
			}

			if(section == null) {
				section = this.doc.createCDATASection(value);
			}
			
			setting.appendChild(section);
			save();
		} catch (Exception e) {
			logger.warn("Unable to write setting: " + compiledName);
		}
	}