//constructor
        public StrengthExerciseViewModel()
        {
            Title = "Exercises";
            //data store
            Exercises = new ObservableCollection <StrengthExercise>();
            //set commands
            LoadExercisesCommand = new Command(async() => await ExecuteLoadItemsCommand());

            //default to today
            SelectedDate = DateTime.Today;

            //define messages this view model can receive
            MessagingCenter.Subscribe <NewStrengthExercisePage, StrengthExercise>(this, "AddExercise", async(obj, item) =>
            {
                //add to source data
                await DataStore.AddExerciseAsync(item);
            });
            MessagingCenter.Subscribe <StrengthExerciseDetailPage, StrengthExercise>(this, "DeleteExercise", async(obj, item) =>
            {
                //remove from the local data store
                Exercises.Remove(Exercises.FirstOrDefault(s => s.Id == item.Id));
                //remove from source data
                await DataStore.DeleteExerciseAsync(item.Id);
            });
            MessagingCenter.Subscribe <StrengthExerciseDetailPage, StrengthExercise>(this, "UpdateExercise", async(obj, item) =>
            {
                if (IsBusy)
                {
                    return;
                }

                IsBusy = true;
                try
                {
                    //update the source data
                    await DataStore.UpdateExerciseAsync(item);
                }
                catch (Exception ex)
                {
                    Debug.WriteLine(ex);
                }
                finally
                {
                    IsBusy = false;
                }
            });
        }