public async Task LoadLocal()
		{
			await Common.Helpers.RemoteResourceManager.Instance.LoadLocal();

			MetaDataCacheFolder = new StorageDirectory(new object[]
			{
				FileStorageManager.LocalFilesFolderName,
				AppProfileManager.Instance.AppNameSet,
				"Cache"
			});
			if (!await MetaDataCacheFolder.Exists())
				await StorageDirectory.CreateSubFolder(new object[]
				{
					FileStorageManager.LocalFilesFolderName,
					AppProfileManager.Instance.AppNameSet
				}, "Cache");

			LocalLibraryCacheFolder = new StorageDirectory(new object[]
			{
				FileStorageManager.LocalFilesFolderName,
				AppProfileManager.Instance.AppNameSet,
				"Library"
			});
			if (!await LocalLibraryCacheFolder.Exists())
				await StorageDirectory.CreateSubFolder(new object[]
				{
					FileStorageManager.LocalFilesFolderName,
					AppProfileManager.Instance.AppNameSet
				}, "Library");
		}
		public async Task LoadLocal()
		{
			await Common.Helpers.RemoteResourceManager.Instance.LoadLocal();

			MetaDataCacheFolder = new StorageDirectory(new object[]
			{
				FileStorageManager.LocalFilesFolderName,
				AppProfileManager.Instance.AppNameSet,
				"Cache"
			});
			if (!await MetaDataCacheFolder.Exists())
				await StorageDirectory.CreateSubFolder(new object[]
				{
					FileStorageManager.LocalFilesFolderName,
					AppProfileManager.Instance.AppNameSet
				}, "Cache");

			ArchiveFolder = new StorageDirectory(AppProfileManager.Instance.ProfileFolder.RelativePathParts.Merge("Sync Archive"));
			if (!await ArchiveFolder.Exists(true))
				await StorageDirectory.CreateSubFolder(AppProfileManager.Instance.ProfileFolder.RelativePathParts, "Sync Archive", true);
		}
		public async Task LoadLocal()
		{
			TempFolder = new StorageDirectory(new[]
			{
				"Temp"
			});
			if (TempFolder.ExistsLocal())
				Utils.CleanFolder(TempFolder.LocalPath);
			if (!TempFolder.ExistsLocal())
				await StorageDirectory.CreateSubFolder(new string[] { }, "Temp");

			AppSharedSettingsFolder = new StorageDirectory(new object[]
			{
				FileStorageManager.LocalFilesFolderName,
				AppProfileManager.Instance.AppName,
				"shared"
			});
			if (!await AppSharedSettingsFolder.Exists())
				await StorageDirectory.CreateSubFolder(new[] { FileStorageManager.LocalFilesFolderName }, new[] { AppProfileManager.Instance.AppName, "shared" });

			AppAliasSettingsFolder = new StorageDirectory(new object[]
			{
				FileStorageManager.LocalFilesFolderName,
				AppProfileManager.Instance.AppNameSet,
			});
			if (!await AppAliasSettingsFolder.Exists())
				await StorageDirectory.CreateSubFolder(new[] { FileStorageManager.LocalFilesFolderName }, AppProfileManager.Instance.AppNameSet);

			AppSettingsFile = new StorageFile(new object[]
			{
				FileStorageManager.LocalFilesFolderName,
				AppProfileManager.Instance.AppNameSet,
				"Settings.xml"
			});
			AppSettingsFile.AllocateParentFolder();
		}
		public async Task LoadProfile()
		{
			_localAppIdFile = String.IsNullOrEmpty(LibraryAlias) ?
				new StorageFile(new[] { String.Format("{0}_app_id.xml", AppName) }) :
				new StorageFile(new[] { String.Format("{0}_{1}_app_id.xml", AppName, LibraryAlias) });

			_appID = Guid.Empty;
			if (File.Exists(_localAppIdFile.LocalPath))
			{
				var document = new XmlDocument();
				document.Load(_localAppIdFile.LocalPath);

				var node = document.SelectSingleNode(@"/AppID");
				if (!String.IsNullOrEmpty(node?.InnerText))
					_appID = new Guid(node.InnerText);
			}

			if (_appID.Equals(Guid.Empty))
				CreateProfile();

			ProfilesRootFolder = new StorageDirectory(new object[]
			{
				FileStorageManager.OutgoingFolderName,
				AppNameSet
			});
			if (!await ProfilesRootFolder.Exists(true))
				if (AppNameSet.Length > 1)
				{
					await StorageDirectory.CreateSubFolder(new[]
					{
						FileStorageManager.OutgoingFolderName
					}, AppName, true);
					await StorageDirectory.CreateSubFolder(new[]
					{
						FileStorageManager.OutgoingFolderName
					}, AppNameSet, true);
				}
				else
				{
					await StorageDirectory.CreateSubFolder(new[]
					{
						FileStorageManager.OutgoingFolderName
					}, AppNameSet, true);
				}

			ProfileFolder = new StorageDirectory(ProfilesRootFolder.RelativePathParts.Merge(ProfileName));
			if (!await ProfileFolder.Exists(true))
				await StorageDirectory.CreateSubFolder(ProfilesRootFolder.RelativePathParts, ProfileName, true);

			UserDataFolder = new StorageDirectory(ProfileFolder.RelativePathParts.Merge(new[] { UserDataFolderName }));
			if (!await UserDataFolder.Exists(true))
				await StorageDirectory.CreateSubFolder(ProfileFolder.RelativePathParts, UserDataFolderName, true);
		}
		public async Task Load()
		{
			await Common.Helpers.RemoteResourceManager.Instance.LoadLocal();
			await Common.Helpers.RemoteResourceManager.Instance.LoadRemote();

			#region Local
			LocalLibraryFolder = new StorageDirectory(new[]
			{
				FileStorageManager.LocalFilesFolderName,
				"Libraries"
			});
			if (!await LocalLibraryFolder.Exists())
				await StorageDirectory.CreateSubFolder(new[] { FileStorageManager.LocalFilesFolderName }, "Libraries");

			EmailBinFile = new StorageFile(new object[]
			{
				FileStorageManager.LocalFilesFolderName,
				AppProfileManager.Instance.AppNameSet,
				"EmailBin.xml"
			});
			EmailBinFile.AllocateParentFolder();
			#endregion

			#region Remote
			var appOutgoingFolder = new StorageDirectory(new object[]
			{
				FileStorageManager.IncomingFolderName,
				AppProfileManager.Instance.AppNameSet,
				"AppSettings"
			});

			NetworkPathFile = new StorageFile(appOutgoingFolder.RelativePathParts.Merge(
				"NetworkPath.txt"
				));
			await NetworkPathFile.Download();

			DefaultViewFile = new StorageFile(appOutgoingFolder.RelativePathParts.Merge(
				"DefaultView.xml"
				));
			await DefaultViewFile.Download();

			ViewButtonsFile = new StorageFile(appOutgoingFolder.RelativePathParts.Merge(
				"ViewButtons.xml"
				));
			await ViewButtonsFile.Download();

			TabSettingsFile = new StorageFile(appOutgoingFolder.RelativePathParts.Merge(
				"SDTabNames.xml"
				));
			await TabSettingsFile.Download();

			CalendarDisclaimerFile = new StorageFile(new object[]
			{
				FileStorageManager.IncomingFolderName,
				AppProfileManager.Instance.AppNameSet,
				"Nielsen Permissible Use.pdf"
			});
			await CalendarDisclaimerFile.Download();

			Gallery1ConfigFile = new StorageFile(appOutgoingFolder.RelativePathParts.Merge(
				"Gallery1.xml"
				));
			await Gallery1ConfigFile.Download();

			Gallery2ConfigFile = new StorageFile(appOutgoingFolder.RelativePathParts.Merge(
				"Gallery2.xml"
				));
			await Gallery2ConfigFile.Download();

			CalendarRibbonLogoFile = new StorageFile(appOutgoingFolder.RelativePathParts.Merge(
				"oc_logo.png"
				));
			await CalendarRibbonLogoFile.Download();

			SDSearchFile = new StorageFile(new object[]
			{
				FileStorageManager.IncomingFolderName,
				AppProfileManager.Instance.AppNameSet,
				"Data",
				"SDSearch.xml"
			});
			await SDSearchFile.Download();
			#endregion
		}
		public static async Task<bool> Exists(string[] relativePathParts, bool checkRemoteToo = false)
		{
			var storageItem = new StorageDirectory(relativePathParts);
			return await storageItem.Exists(checkRemoteToo);
		}