     }
     
     func updateProgress(_ percentComplete: Double) {
-        self.hudView.updateProgress(percentComplete)
-        self.hudView.updateProgressText(percentComplete)
+        self.hudView?.updateProgress(percentComplete)
+        self.hudView?.updateProgressText(percentComplete)
     }
     
     func finish() {
-        self.hudView.finish()
+        self.hudView?.finish()
+        self.hudView?.removeFromSuperview()
+        self.hudView = nil
+        
         self.link?.reset()
         self.dismissalLink?.reset()
         self.link = nil

        if self.dismissalLink != nil { return }
        
        self.link?.reset()
        self.hudView.setText(text: text ?? self.content?.completionText)
        
        if let d = deley {
            self.link = DisplayLink(d)
            self.link?.updateDurationCallback = { [weak self] percentComplete in
                self?.hudView.finishAllIfNeeded()
            }
            self.link?.completion = { [weak self] in
                self?.dismiss(duration, nil, text, completion)

            break
        }
        
        self.hudView?.setText(text: self.content?.loadingText)
        let needShowProgressText = self.content?.loadingText == nil
        self.link?.updateDurationCallback = { [weak self] percentComplete in
            self?.hudView?.updateProgress(percentComplete)
            if needShowProgressText {
                self?.hudView?.updateProgressText(percentComplete)
            }
        }
        
