public Task <bool> Vend(CashCard cashCard, int PinNumber) { var isVendingSuccess = false; // No point proceeding if PIN is incorrect if (_cardManager.IsAuthorised(cashCard, PinNumber)) { var isVendingPossible = _inventoryManager.IsVendingPossible(); var doesAccHaveBalance = _accountManager.DoesAccountHaveBalance(cashCard); if (isVendingPossible.Result && doesAccHaveBalance.Result) { var updateAccount = _accountManager.UpdateAccount(cashCard); var updateInventory = _inventoryManager.UpdateInventory(); if (updateAccount && updateInventory) { isVendingSuccess = true; } } } return(Task.FromResult <bool>(isVendingSuccess)); }