private void move(){
        //Nothing to operate
        if(onOperating.isEmpty()){
            //No floors is waiting
            if(onWaiting.isEmpty()){
                status = 0;
                idle();
            }
            //Floors are waiting
           else{
                rearrange();
            }
        }
        //On operating
        else{
            if(status ==0){
                status = 1;
                notify();
                return;
            }
            currentFloor += direction;
            Path elevatorPath = new Path();        
            
            elevatorPath.getElements().add(new MoveTo(X_BASE, currentY));
            if(direction>0){
                currentY -= FLOOR_GAP;
                elevatorPath.getElements().add(new LineTo(X_BASE, currentY));
                PathTransition pathTran = new PathTransition(Duration.seconds(2), elevatorPath, elevatorView);
                pathTran.setInterpolator(Interpolator.LINEAR);
                pathTran.playFromStart();
                System.out.println("Up " + (currentFloor +1)+"F");
                try{
                    Thread.currentThread().sleep(2000);
                }catch(InterruptedException e){
                    e.printStackTrace();
                }
            }
            else if(direction<0){
                currentY += FLOOR_GAP;
                elevatorPath.getElements().add(new LineTo(X_BASE, currentY));
                PathTransition pathTran = new PathTransition(Duration.seconds(2), elevatorPath, elevatorView);
                pathTran.playFromStart();
                System.out.println("Down " + (currentFloor +1)+"F");
                try{
                    Thread.currentThread().sleep(2000);
                }catch(InterruptedException e){
                    e.printStackTrace();
                }
            }
        }
    }