         return searchLanguageBarViewController
     }()
     
-    var areResultsVisible: Bool {
-        get {
-            return resultsViewController.view.isHidden
-        }
-        set {
-            resultsViewController.view.isHidden = !newValue
-            collectionView.isHidden = newValue
-        }
+    func setSearchResultsVisible(_ visible: Bool, animated: Bool) {
+        let completion = { (finished: Bool) in
+            self.resultsViewController.view.isHidden = !visible
+        }
+        guard animated else {
+            completion(true)
+            return
+        }
+        self.resultsViewController.view.alpha = visible ? 0 : 1
+        self.resultsViewController.view.isHidden = false
+        let animations = {
+            self.resultsViewController.view.alpha = visible ? 1 : 0
+        }
+        UIView.animate(withDuration: 0.3, animations: animations, completion: completion)
     }
     
     lazy var resultsViewController: SearchResultsViewController = {

        return true
    }
    
    func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
        search(for: searchBar.text, suggested: false)
    }

        let sucess = { (results: WMFSearchResults, type: WMFSearchType) in
            DispatchQueue.main.async {
                commonCompletion()
                self.fakeProgressController.finish()
                guard
                    let resultsArray = results.results,
