public boolean pickAndExecuteAnAction() {
		try {
		//synchronized(Customers){
			for(int i =0; i < Customers.size(); i++){
			////print("" + Customers.get(i).s );
				if(Customers.get(i).s == CustomerState.waiting){
					seatCustomer(Customers.get(i));
					return true;
				}
			}
		
		
		//synchronized(Customers){
			for(int i =0; i < Customers.size(); i++){
				if(Customers.get(i).s == CustomerState.readyToOrder){
					takeOrder(Customers.get(i));
					return true;
				}
			}
		//}
		
		//synchronized(Customers){
			for(int i =0; i < Customers.size(); i++){
				if(Customers.get(i).s == CustomerState.customersFoodReady){
					pickUpFood(Customers.get(i));
					return true;
				}
			}
		//}
		
		//synchronized(Customers){
			for(int i =0; i < Customers.size(); i++){
				if(Customers.get(i).s == CustomerState.eating){
					GetBill(Customers.get(i));
					return true;
				}
			}
		//}

		
		waiterGui.GoToIdleSpot();
		return false;
		//we have tried all our rules and found
		//nothing to do. So return false to main loop of abstract agent
		//and wait.
		}
		catch (ConcurrentModificationException e) {
			
			return false;
		}
	}