public void execute() {
		CarWashState cws = ((CarWashState) state);
		
		state.setMessage("Leave");
		state.setLastEventTime(arrivalTime);
		cws.setNextCarID(carID);
		state.stateChange();
		
		if (carWashType == CarWashType.FAST) {
			cws.leaveFastMachine();
		}
		
		else if (carWashType == CarWashType.SLOW) {
			cws.leaveSlowMachine();
		}
		
		if (cws.getQueueSize() > 0) {
			CarWashType carWashType = CarWashType.NONE;
			
			if (cws.getAvailableFastMachines() > 0) {
				carWashType = CarWashType.FAST;
				cws.occupyFastmachine();
			}
			
			else if (cws.getAvailableSlowMachines() > 0) {
				carWashType = CarWashType.SLOW;
				cws.occupySlowMachine();
			}
			
			if (carWashType != CarWashType.NONE) {
				cws.incCount();
				
				queue.addEvent(new CarLeave(state, queue, arrivalTime + cws.getWashTime(carWashType), cws.getFirstInQueue().getId(), carWashType));
				cws.removeFirstInQueue();
			}
		}
	}