public boolean pickAndExecuteAnAction() {
		// If customer underpaid
		synchronized(Bills) {
			for (Bill b : Bills) {
				if (b.state.equals(Bill.State.underpaid)) {
					TellCustomerTheyOwe(b);
					return true;
				}
			}
		}
		
		// If customer overpaid
		synchronized(Bills) {
			for (Bill b : Bills) {
				if (b.state.equals(Bill.State.overpaid)) {
					GiveChange(b);
					return true;
				}
			}
		}
		
		// If customer paid exact change
		synchronized(Bills) {
			for (Bill b : Bills) {
				if (b.state.equals(Bill.State.paid)) {
					ThankForComing(b);
					return true;
				}
			}
		}
		
		// Give customers their total
		synchronized(Bills) {
			for (Bill b : Bills) {
				if (b.state.equals(Bill.State.customerApproached)) {
					GiveBill(b);
					return true;
				}
			}
		}
		
		return false;
	}