	public void saveCustomConfigAndCompileCSS(Map<String, Map<String, Object>> customConfig, CourseEnvironment courseEnvironment){
		VFSContainer themeBase = null;
		VFSContainer base = null;
		base = (VFSContainer) courseEnvironment.getCourseBaseContainer().resolve(CourseLayoutHelper.LAYOUT_COURSE_SUBFOLDER);
		if (base == null) {
			base = courseEnvironment.getCourseBaseContainer().createChildContainer(CourseLayoutHelper.LAYOUT_COURSE_SUBFOLDER);
		}
		themeBase = (VFSContainer) base.resolve("/" + CourseLayoutHelper.CONFIG_KEY_CUSTOM);
		if (themeBase == null) {
			themeBase = base.createChildContainer(CourseLayoutHelper.CONFIG_KEY_CUSTOM);
		}
		VFSLeaf configTarget = (VFSLeaf) themeBase.resolve(CUSTOM_CONFIG_XML);
		if (configTarget == null) {
			configTarget = themeBase.createChildLeaf(CUSTOM_CONFIG_XML);
		} 
		
		XStream xStream = XStreamHelper.createXStreamInstance();
		xStream.toXML(customConfig, configTarget.getOutputStream(false));
		
		// compile the css-files
		StringBuilder sbMain = new StringBuilder();
		StringBuilder sbIFrame = new StringBuilder();
		for (Entry<String, Map<String, Object>> iterator : customConfig.entrySet()) {
			String type = iterator.getKey();
			Map<String, Object> elementConfig = iterator.getValue();			
		  AbstractLayoutElement configuredLayEl = createLayoutElementByType(type, elementConfig);
			sbIFrame.append(configuredLayEl.getCSSForIFrame());	
			sbMain.append(configuredLayEl.getCSSForMain());	
		}
		
		// attach line for logo, if there is any to cssForMain:
		appendLogoPart(sbMain, themeBase);
		
		VFSLeaf mainFile = (VFSLeaf) themeBase.resolve(MAIN_CSS);
		if (mainFile == null) mainFile = themeBase.createChildLeaf(MAIN_CSS);
		VFSLeaf iFrameFile = (VFSLeaf) themeBase.resolve(IFRAME_CSS);
		if (iFrameFile == null) iFrameFile = themeBase.createChildLeaf(IFRAME_CSS);
		FileUtils.save(mainFile.getOutputStream(false), sbMain.toString(), "utf-8");
		FileUtils.save(iFrameFile.getOutputStream(false), sbIFrame.toString(), "utf-8");		
	}
The software does not properly neutralize special elements that are used in XML, allowing attackers to modify the syntax, content, or commands of the XML before it is processed by an end system.