private static bool SaveCleanREGFile(string filePath, MainViewModel viewModel, OSPlatformEnum osPlatform = OSPlatformEnum.x86, RegistryTargetEnum registryTarget = RegistryTargetEnum.HKCU)
		{
			UIOptionRootType defaultXMLOptionRoot = OptionMapper.DefaultXmlToOptionModel();
			UIOptionRootType dirtyOptionRoot = OptionMapper.DefaultXmlToOptionModel();
			OptionMapper.UIModelToOptionModel(dirtyOptionRoot, viewModel, true, false);

			MakeOptionRootsMutuallyExclusive(defaultXMLOptionRoot, dirtyOptionRoot);

			// Save UIOptionRootType

			using (IVisitor dirtyVisitor = new REGVisitor(filePath, osPlatform, registryTarget, false))
			{
				dirtyOptionRoot.Accept(dirtyVisitor);
			}

			using (IVisitor cleanVisitor = new CleanREGVisitor(filePath, osPlatform, registryTarget, true))
			{
				defaultXMLOptionRoot.Accept(cleanVisitor);
			}

			return true;
		}
		private static bool SaveREGFile(string filePath, MainViewModel viewmodel, OSPlatformEnum osPlatform = OSPlatformEnum.x86, RegistryTargetEnum registryTarget = RegistryTargetEnum.HKCU)
		{
			// Get UIOptionRootType from View Model
			UIOptionRootType rootOptions = OptionMapper.DefaultXmlToOptionModel();
			OptionMapper.UIModelToOptionModel(rootOptions, viewmodel, true, true);
			
			// Save UIOptionRootType

			using (IVisitor visitor = new REGVisitor(filePath, osPlatform, registryTarget, false))
			{
				rootOptions.Accept(visitor);
			}

			return true;
		}