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

    var direction: Direction = Direction.Idle
    var floor: Int = 1
    var type: RequestType
    
    init(direction: Direction, floor: Int, type: RequestType) {
        self.direction = direction
        self.floor = floor
        self.type = type
    }
    
    init(floor: Int) {

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