public async void Save()
        {
            try
            {
                string name = Name.Trim();

                if (name.Length == 0)
                {
                    await new PortableMessageDialog(PowerPlannerResources.GetString("String_NoNameMessageBody")).ShowAsync();
                    return;
                }

                await TryHandleUserInteractionAsync("Save", async (cancellationTask) =>
                {
                    SavedGradeScalesManager manager = await SavedGradeScalesManager.GetForAccountAsync(MainScreenViewModel.CurrentAccount);
                    cancellationTask.ThrowIfCancellationRequested();

                    if (manager == null)
                    {
                        throw new NullReferenceException("manager was null");
                    }

                    await manager.SaveGradeScale(name, _parameter.Scales);

                    if (_parameter.OnSaved != null)
                    {
                        _parameter.OnSaved.Invoke();
                    }

                    // We cancel after invoking the OnSaved, since otherwise the views wouldn't be updated correctly
                    cancellationTask.ThrowIfCancellationRequested();

                    this.RemoveViewModel();
                }, "Failed to save. Your error has been reported.");
            }

            catch (Exception ex)
            {
                TelemetryExtension.Current?.TrackException(ex);

                await new PortableMessageDialog("Failed to save. Your error has been reported.").ShowAsync();
                return;
            }
        }