 
         popover.contentViewController = ConfigureViewController(nibName: "ConfigureViewController", bundle: nil)
 
-        // Weather Timer
-        weatherTimer = Timer.scheduledTimer(
-            timeInterval: DefaultsManager.shared.refreshInterval,
-            target: self,
-            selector: #selector(getWeather),
-            userInfo: nil, repeats: true
-        )
-        weatherTimer?.fire()
+        resetWeatherTimer()
 
         // Close popover if clicked outside the popover
         eventMonitor = EventMonitor(mask: .leftMouseDown) { [weak self] event in
             if self?.popover.isShown == true { self?.closePopover(event) }
         }
         eventMonitor?.start()
+
+        NotificationCenter.default.addObserver(
+            self,
+            selector: #selector(defaultsDidChange),
+            name: UserDefaults.didChangeNotification,
+            object: nil
+        )
     }
 
     @objc func getWeather(_ sender: AnyObject?) {

        eventMonitor?.stop()
    }

    @objc func togglePopover(_ sender: AnyObject?) {
        popover.isShown ? closePopover(sender) : showPopover(sender)
    }

    @objc func terminate() { NSApp.terminate(self) }

    // MARK: CLLocationManagerDelegate

    func locationManager(_ manager: CLLocationManager, didFailWithError error: Error) {

@NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate, CLLocationManagerDelegate {

    @IBOutlet weak var window: NSWindow!

    private let statusItem = NSStatusBar.system.statusItem(withLength: NSStatusItem.variableLength)
    private let locationManager = CLLocationManager()
    private let locationTimerInterval = TimeInterval(900)
    private let popover = NSPopover()
    private var defaultsChanged = false
    private var locationTimer: Timer?
    private var weatherTimer: Timer?
    private var currentLocation: CLLocationCoordinate2D?
    private var eventMonitor: EventMonitor?

    func applicationDidFinishLaunching(_ aNotification: Notification) {
        // Location
