         searchFilterListController.currentFilterType = currentSearchFilter
         self.view.addSubview(filterDropDownContainerView)
         
-        UIView.animate(withDuration: 0.5, delay: 0, usingSpringWithDamping: 0.8, initialSpringVelocity: 0, options: [.allowUserInteraction], animations: {
+        UIView.animate(withDuration: 0.5, delay: 0, usingSpringWithDamping: 0.8, initialSpringVelocity: 0, options: [.allowUserInteraction, .beginFromCurrentState], animations: {
             
             self.filterDropDownContainerView.frame = CGRect(x: self.filterDropDownContainerView.frame.origin.x,
                                                             y: self.filterDropDownContainerView.frame.origin.y,
                                                             width: self.filterDropDownContainerView.frame.size.width,
                                                             height: origHeight)
             
-        }, completion: { (done) in })
-    }
-    
-    fileprivate func hideSearchFilterDropdown() {
+        }, completion: { (done) in
+            completion(done)
+        })
+    }
+    
+    fileprivate func hideSearchFilterDropdown(completion: @escaping ((Bool) -> Void)) {
         
         let origHeight = filterDropDownContainerView.bounds.height
         
         self.touchOutsideOverlayView.removeFromSuperview()
         
-        UIView.animate(withDuration: 0.5, delay: 0, usingSpringWithDamping: 0.8, initialSpringVelocity: 0, options: [.allowUserInteraction], animations: {
+        UIView.commitAnimations()
+        
+        UIView.animate(withDuration: 0.5, delay: 0, usingSpringWithDamping: 0.8, initialSpringVelocity: 0, options: [.allowUserInteraction, .beginFromCurrentState], animations: {
             
             self.filterDropDownContainerView.frame = CGRect(x: self.filterDropDownContainerView.frame.origin.x,
                                                             y: self.filterDropDownContainerView.frame.origin.y,

            }

            if newValue {
                showSearchFilterDropdown()
            } else {
                hideSearchFilterDropdown()
            }
            
            updateSearchFilterTitle()

        }
    }
    
    fileprivate func showSearchFilterDropdown(completion: @escaping ((Bool) -> Void)) {
        
        guard let isSearchBarInNavigationBar = self.isSearchBarInNavigationBar else {
            // TODO: error
