static BigDecimal processUserSelection(VendingMachine vendingMachine, Scanner scanner, BigDecimal balance) {
        // user inputs coins to the vending machine - require a balance to store the current value of the balance
        // validate user inputs, i.e. have they entered a valid coin value?
        while(balance.compareTo(MIN_BALANCE) == -1) {

            System.out.println("Please enter a coin...");

            Coin inserted_coin = new Coin(scanner.nextBigDecimal());
            System.out.println("Current balance: " + balance);

            // method to determine users product choice (value) against the current balance of the vending machine.
            // if balance is equal to or exceeds product value, dispense product and return change (if any).
            if(vendingMachine.getValidCoins().contains(inserted_coin)) {

                // increase vending machine coin values
                balance = processCoinEntry(coin_totals, balance, inserted_coin);

            } else {
                System.out.println("Invalid selection, please enter a valid coin value.");
            }
        }

        return balance;
    }