     window?.toolbar?.selectedItemIdentifier = "Tweaks"
   }
 }
+
+private var kvoContext = 0

  }
  
  deinit {
    UserDefaults.standard.removeObserver(self, forKeyPath: "savePath")
    UserDefaults.standard.removeObserver(self, forKeyPath: "feedURL")
  }
}


    if !Defaults.shared.isConfigurationValid { showWindow(self) }
    
    // TODO: encapsulate this
    UserDefaults.standard.addObserver(self, forKeyPath: "savePath", options: .new, context: &kvoContext)
    UserDefaults.standard.addObserver(self, forKeyPath: "feedURL", options: .new, context: &kvoContext)
  }
  
  override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey:Any]?, context: UnsafeMutableRawPointer?) {
    if context == &kvoContext {
      refreshInvalidInputMarkers()
    } else {
      super.observeValue(forKeyPath: keyPath, of: object, change: change, context: context)
    }
  }
  
  fileprivate func refreshInvalidInputMarkers() {
