         presentViewController(UINavigationController.init(rootViewController: languagesVC), animated: true, completion: nil)
     }
 
-    @objc func languagesController(controller: WMFPreferredLanguagesViewController!, didUpdatePreferredLanguages languages: [MWKLanguageLink]!) {
-        updateLanguageBarLanguageButtons()
+    func languagesController(controller: WMFPreferredLanguagesViewController!, didUpdatePreferredLanguages languages: [MWKLanguageLink]!) {
+        // Reminder: nothing needs to be updated here because it happens in view will/did appear.
+    }
+    
+    func languagesController(controller: WMFLanguagesViewController!, didSelectLanguage language: MWKLanguageLink!) {
+        currentlySelectedSearchLanguage = language
+        controller.dismissViewControllerAnimated(true, completion: nil)
     }
 }


    override func viewDidAppear(animated: Bool) {
        super.viewDidAppear(animated)
        selectFirstLanguageIfNoneSelectedOrIfFirstLanguageHasChanged()
        previousFirstLanguage = languageBarLanguages().first
    }
    
    private func languageBarLanguages() -> [MWKLanguageLink] {
        return Array(MWKLanguageLinkController.sharedInstance().preferredLanguages.prefix(3))
    }

    private func selectFirstLanguageIfNoneSelectedOrIfFirstLanguageHasChanged(){
        if(isEveryButtonUnselected() || isFirstLanguageDifferentFromLastTime()){
            setCurrentlySelectedLanguageToButtonLanguage(withSender:languageButtons.first!)
        }
    }
    
    private func isEveryButtonUnselected() -> Bool{
        for button in languageButtons {
            if button.selected {
                return false
            }
        }
        return true
    }

    private func isFirstLanguageDifferentFromLastTime() -> Bool{
        guard let first = languageBarLanguages().first, previous = previousFirstLanguage else {
            return false
        }
        return !first.isEqualToLanguageLink(previous)
    }

    private func updateLanguageBarLanguageButtons(){


    private(set) var currentlySelectedSearchLanguage: MWKLanguageLink? {
        get {
            if let siteURL = NSUserDefaults.wmf_userDefaults().wmf_currentSearchLanguageDomain(), selectedLanguage = MWKLanguageLinkController.sharedInstance().languageForSiteURL(siteURL) {
                return selectedLanguage
            }else{
                if let appLang:MWKLanguageLink? = MWKLanguageLinkController.sharedInstance().appLanguage {
