         }
     }
     
+    // MARK: Extract Info from UI
+    
+    private func filterFromUI() -> URLItem.ArchiveFilter? {
+        guard
+            let button = self.filterPopupButton,
+            let selection = URLItem.ArchiveFilter(rawValue: button.selectedItem?.tag ?? 55)
+        else { return .none }
+        return selection
+    }
+    
+    private func sortOrderFromUI() -> URLItem.SortOrder? {
+        guard
+            let button = self.sortOrderPopupButton,
+            let selection = URLItem.SortOrder(rawValue: button.selectedItem?.tag ?? 55)
+        else { return .none }
+        return selection
+    }
+    
+    // MARK: Respond to User Actions
+    
     @IBAction private func sortOrderChosen(_ sender: NSObject?) {
         // check if the new selection is different before notifying the delegate
-        guard self.sortOrder != self.delegate?.sortOrder else { return }
+        guard let newValue = self.sortOrderFromUI(), newValue != _sortOrder else { return }
+        _sortOrder = newValue
         self.delegate?.didChange(itemsToLoad: .none, sortOrder: self.sortOrder, filter: .none, sender: .tertiaryVC)
     }
     
     @IBAction func filterChosen(_ sender: NSObject?) {
         // check if the new selection is different before notifying the delegate
-        guard self.filter != self.delegate?.filter else { return }
+        guard let newValue = self.filterFromUI(), newValue != _filter else { return }
+        _filter = newValue
         self.delegate?.didChange(itemsToLoad: .none, sortOrder: .none, filter: self.filter, sender: .tertiaryVC)
     }
 }

        
        // view did load could be called after these things have been configured by the parent view
        // so just hit that didSet method again to make sure I'm up to date
        let sortOrder = self._sortOrder
        let filter = self._filter
        self.sortOrder = sortOrder
        self.filter = filter
    }
    
    private func configureSortOrderPopupButton() {

        }
    }
    
    private var _sortOrder = URLItem.SortOrder.recentlyAddedOnTop
    var sortOrder: URLItem.SortOrder {
        get {
            return _sortOrder
        }
        set {
            self._sortOrder = newValue
