     }
     
     func updateTimeLabel() {
-        progressView.progress = Float(engine.elapsedTime / engine.totalTime)
+        progressAnimator = UIViewPropertyAnimator(duration: 1, curve: .linear) {
+            self.progressView.setProgress(Float((self.engine.elapsedTime + 1) / self.engine.totalTime), animated: true)
+        }
+        progressAnimator?.startAnimation()
+        
         if let remainingString = engine.remainingTime.formattedAsRemaining() {
             timeLabel.text = remainingString
         }

            stopUpdatingTime()
        }
        
        updateTimeLabel()
        timeTimer = Timer.scheduledTimer(withTimeInterval: 1, repeats: true) { _ in
            self.updateTimeLabel()

    
    private let transportViewHeight: CGFloat = 90
    private var timeTimer: Timer?
    private var progressAnimator: UIViewPropertyAnimator?
    
    private var addStingAfterIndex: Int?
    
