public async Task <AccountRegisterItemViewModel> AddWithdrawalAsync()
        {
            AccountRegisterItemViewModel vm = null;

            switch (this.AccountType)
            {
            case BankAccountType.Checking:
                vm = await AddCheckingWithdrawalAsync();

                (vm as CheckingWithdrawalViewModel).ItemUpdated += OnRegisterUpdated;
                break;

            case BankAccountType.Savings:
                vm = await AddSavingsWithdrawalAsync();

                (vm as SavingsWithdrawalViewModel).ItemUpdated += OnRegisterUpdated;
                break;
            }

            this.AccountRegister.Add(vm);
            await GroupAccountItemsAsync();

            this.SelectedRegisterItem = vm;

            return(vm);
        }
        public async Task <bool> DeleteRegisterItemAsync(AccountRegisterItemViewModel vm)
        {
            bool _deleted = false;

            switch (vm.ItemType)
            {
            case AccountRegisterItemViewModel.AccountItemType.Deposits:
                switch (this.AccountType)
                {
                case BankAccountType.Checking:
                    _deleted = await(vm as CheckingDepositViewModel).DeleteAsync();
                    (vm as CheckingDepositViewModel).ItemUpdated -= OnRegisterUpdated;
                    break;

                case BankAccountType.Savings:
                    _deleted = await(vm as SavingsDepositViewModel).DeleteAsync();
                    (vm as SavingsDepositViewModel).ItemUpdated -= OnRegisterUpdated;
                    break;
                }
                break;

            case AccountRegisterItemViewModel.AccountItemType.Withdrawals:
                switch (this.AccountType)
                {
                case BankAccountType.Checking:
                    _deleted = await(vm as CheckingWithdrawalViewModel).DeleteAsync();
                    (vm as CheckingWithdrawalViewModel).ItemUpdated -= OnRegisterUpdated;
                    break;

                case BankAccountType.Savings:
                    _deleted = await(vm as SavingsWithdrawalViewModel).DeleteAsync();
                    (vm as SavingsWithdrawalViewModel).ItemUpdated -= OnRegisterUpdated;
                    break;
                }
                break;
            }

            if (_deleted && this.AccountRegister.Contains(vm, new AccountRegisterItemViewModelComparer()))
            {
                this.AccountRegister.Remove(vm);
                GroupAccountItems();
            }

            return(_deleted);
        }