     }
     
     func dismissHint() {
-        NSObject.cancelPreviousPerformRequests(withTarget: self, selector: #selector(setHint(visible:)), object: false)
-        perform(#selector(setHint(visible:)), with: false, afterDelay: 8)
-    }
-    
-    @objc func setHint(visible: Bool) {
-        
-        let frame = visible ? hintFrame.visible : hintFrame.hidden
-        if visible {
+        NSObject.cancelPreviousPerformRequests(withTarget: self, selector: #selector(setHintHidden), object: 1)
+        perform(#selector(setHintHidden), with: 1, afterDelay: 8)
+    }
+    
+    @objc func setHintHidden(_ hintHidden: Bool) {
+        let frame = hintHidden ? hintFrame.hidden : hintFrame.visible
+        if !hintHidden {
             // add hint before animation starts
-            isHintVisible = visible
+            isHintHidden = hintHidden
             // set initial frame
             if hint.view.frame.origin.y == 0 {
                 hint.view.frame = hintFrame.hidden

    // MARK: - ReadingListHintViewControllerDelegate
    
    func viewControllerWillBeDismissed() {
        setHint(visible: false)
    }
    
    func addedArticleToReadingList() {
        setHint(visible: true)
    }
}


    fileprivate let hintHeight: CGFloat = 50
    fileprivate var theme: Theme = Theme.standard
    
    fileprivate var isHintHidden = true {
        didSet {
            guard isHintHidden != oldValue else {
                return
            }
            if isHintHidden {
                removeHint()
            } else {
                addHint()
                dismissHint()
            }
        }
    }
