     var direction: Direction = Direction.Idle
     var floor: Int = 1
     var type: RequestType
-    
-    init(direction: Direction, floor: Int, type: RequestType) {
+    var destinationAction: (() -> ())?
+    
+    init(direction: Direction, floor: Int, type: RequestType, block: @escaping () -> ()) {
         self.direction = direction
         self.floor = floor
         self.type = type
+        self.destinationAction = block
     }
     
     init(floor: Int) {

                }
                
                if (open) {
                    elevator.arriveAtFloor()
                    for r in remove {
                        _internalRemoveRequests(floor: r)
                    }

        print("elevator: \(short_id()) closing doors at floor: \(floor)")
   }
    
    func arriveAtFloor(request: Request) {
        open()
        sleep(2)
        request.destinationAction?()
        close()
    }
    
