         filterOptions.addTarget(self, action: .actionFilter, for: .valueChanged)
 
     }
+    
+    // MARK: - Observing
+    
+    private func observeSortSetting() {
+        disposable = observe(\.ascending) { [unowned self] newValue in
+            self.engine.sort(ascending: newValue)
+            self.configureNavigationBar()
+            self.realmBrowserView.tableView.reloadData()
+        }
+    }
+    
+    // MARK: - Actions
+    
+    @objc fileprivate func dismissBrowser() {
+        dismiss(animated: true)
+    }
+    
+    @objc fileprivate func toggleFilter() {
+        switch filterOptions.selectedSegmentIndex {
+        case 0:
+            engine.filterBaseModels(false)
+        case 1:
+            engine.filterBaseModels(true)
+        default:
+            return
+        }
+        realmBrowserView.tableView.reloadData()
+    }
+    
+    @objc fileprivate func toggleSort() {
+        ascending.toggle()
+    }
 }
 
 private enum RBSSortStyle: String {

/// 'are not interoperable and using them together is not supported.'
public final class RBSRealmBrowser: UIViewController {

    private var ascending: Bool = false
    private var realmBrowserView: RBSRealmBrowserView = RBSRealmBrowserView()
    private var engine: BrowserEngine

    private var filterOptions: UISegmentedControl = {
        let segmentedControl = UISegmentedControl(items: ["All", "Hide base Realm models"])

        configureNavigationBar()
        configureTableView()
        BrowserTools.checkForUpdates()
        observeSortSetting()
    }

    public override func viewWillTransition(to size: CGSize,
