@Override
		public void run(){
				
			synchronized (dispatchStory.getMonitor()) {
				while (!requestEnter(dispatchStory)) {
				
					try {
						setReadyTransport(true);
						dispatchStory.getMonitor().notifyAll();
						dispatchStory.getMonitor().wait();
						
					} catch (InterruptedException e) {
						logger.error(Thread.currentThread().getName() + Constants.THREAD_ERROR +e.getMessage());
					}
				}
			
				if (!transportationState.equals(TransportationState.ABORTED)) {
					enter();
					dispatchStory.getMonitor().notifyAll();
				}
			}
			
			if (!transportationState.equals(TransportationState.ABORTED)) {
				synchronized (Actions.DEBOARDING) {
					while (!(requestExit(building.getElevator().getCurrentStory()))) { 	
							
						try {
							
							Actions.DEBOARDING.notifyAll();
							Actions.DEBOARDING.wait();
						
						} catch (InterruptedException e) {
							logger.error(Thread.currentThread().getName() + Constants.THREAD_ERROR +e.getMessage());
						}          
					}
				
					if (!transportationState.equals(TransportationState.ABORTED)) {	
						exit();
						Actions.DEBOARDING.notifyAll();
					}
				}	
				
			}	
		}