protected override async Task InitializeAsync()
        {
            Categories.Add(new CategoryHeaderSettingsViewModel("GENERAL"));
            Categories.Add(new InstallationSettingsViewModel(_controller));

            var optionsCategories = _controller.GetDcsOptionCategories();

            if (optionsCategories.Length > 0)
            {
                Categories.Add(new CategoryHeaderSettingsViewModel("DCS"));
            }

            foreach (var category in optionsCategories.OrderBy(c => c.DisplayOrder))
            {
                Categories.Add(new DcsOptionCategoryViewModel(category.DisplayName.ToUpper(), category.Id, _controller));
            }

            Categories.Add(new CategoryHeaderSettingsViewModel("VIEWPORTS"));
            Categories.Add(new ViewportSettingsViewModel(_controller));

            var modules = await _controller.GetInstalledAircraftModulesAsync();

            foreach (var module in modules)
            {
                var options = _controller.GetViewportOptions(module.ModuleId);

                if (options.Length > 0)
                {
                    Categories.Add(new ViewportOptionsViewModel(module, options, _controller));
                }
            }

            Categories.Add(new CategoryHeaderSettingsViewModel("ADVANCED"));
            Categories.Add(new GraphicsSettingsViewModel(_controller));
            Categories.Add(new CameraSettingsViewModel(_controller));
            Categories.Add(new CameraMirrorsSettingsViewModel(_controller));
            Categories.Add(new TerrainSettingsViewModel(_controller));
            Categories.Add(new TerrainMirrorSettingsViewModel(_controller));
            Categories.Add(new TerrainReflectionSettingsViewModel(_controller));
            Categories.Add(new SoundSettingsViewModel(_controller));

            SelectedCategory.Value = Categories.First(c => !(c is CategoryHeaderSettingsViewModel));
            SelectedCategory.Subscribe(OnSelectedCategoryChanged);

            await base.InitializeAsync();
        }
        private async Task PopulateProfileSettingsAsync()
        {
            var profileName       = _profileSettingsService.SelectedProfileName;
            var optionsCategories = _controller.GetDcsOptionCategories();

            Categories.Add(new CategoryHeaderSettingsViewModel($"PROFILE SETTINGS ({profileName})"));

            if (optionsCategories.Length > 0)
            {
                Categories.Add(new CategoryHeaderSettingsViewModel($"    DCS"));
            }

            foreach (var category in optionsCategories.OrderBy(c => c.DisplayOrder))
            {
                Categories.Add(new DcsOptionCategoryViewModel("    " + category.DisplayName.ToUpper(), category.Id, _controller));
            }

            Categories.Add(new CategoryHeaderSettingsViewModel($"    VIEWPORTS"));
            Categories.Add(new ViewportSettingsViewModel(_controller));

            var modules = await _controller.GetInstalledAircraftModulesAsync();

            foreach (var module in modules)
            {
                var options = _controller.GetViewportOptions(module.ModuleId);

                if (options.Length > 0)
                {
                    Categories.Add(new ViewportOptionsViewModel(module, options, _controller));
                }
            }

            Categories.Add(new CategoryHeaderSettingsViewModel($"    ADVANCED"));
            Categories.Add(new GraphicsSettingsViewModel(_controller));
            //Categories.Add(new CameraSettingsViewModel(_controller));
            //Categories.Add(new CameraMirrorsSettingsViewModel(_controller));
            //Categories.Add(new TerrainSettingsViewModel(_controller));
            //Categories.Add(new TerrainMirrorSettingsViewModel(_controller));
            //Categories.Add(new TerrainReflectionSettingsViewModel(_controller));
            Categories.Add(new SoundSettingsViewModel(_controller));

            SelectedCategory.Value = Categories.First(c => !(c is CategoryHeaderSettingsViewModel));
            SelectedCategory.Subscribe(OnSelectedCategoryChanged);
        }