             }
         }
         eventMonitor?.start()
-    }
-
-    @objc func getWeather(_ sender: AnyObject?) {
-        switch WeatherSource(rawValue: configManager.weatherSource) {
-        case .latLong:
-            guard let latLong = configManager.weatherSourceText else {
-                DispatchQueue.main.async { [weak self] in
-                    self?.statusItem.title = self?.latLongErrorString
-                }
-                return
-            }
-            getWeatherViaCoordinates(latLong)
-        case .zipCode:
-            guard let zipCode = configManager.weatherSourceText else {
-                DispatchQueue.main.async { [weak self] in
-                    self?.statusItem.title = self?.zipCodeErrorString
-                }
-                return
-            }
-            getWeatherViaZipCode(zipCode)
-        default:
-            getWeatherViaLocation()
-        }
-    }
-
-    func createLocationTimer() -> Timer {
-        Timer.scheduledTimer(
-            withTimeInterval: locationTimerInterval,
-            repeats: true,
-            block: { [weak self] _ in self?.getLocation() }
-        )
-    }
-
-    @objc func togglePopover(_ sender: AnyObject?) {
-        if popover.isShown {
-            closePopover(sender)
-            resetWeatherTimer()
-        } else {
-            showPopover(sender)
-        }
-    }
-
-    @objc func terminate() { NSApp.terminate(self) }
+
+        resetWeatherTimer()
+    }
 
     private func resetWeatherTimer() {
         weatherTimer?.invalidate()

    @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 let configManager: ConfigManagerType = ConfigManager()
    private lazy var weatherRepository: WeatherRepositoryType = WeatherRepository(configManager: configManager)
    private lazy var locationErrorString = "location_error".localized()
    private lazy var latLongErrorString = "latLong_error".localized()
    private lazy var zipCodeErrorString = "zipCode_error".localized()
    private lazy var unknownString = "unknown".localized()
    private var locationTimer: Timer?
    private var weatherTimer: Timer?
    private var currentLocation: CLLocationCoordinate2D?
    private var eventMonitor: EventMonitor?

    )

    func applicationDidFinishLaunching(_ aNotification: Notification) {
        let menu = NSMenu()
        menu.addItem(withTitle: "Unknown Location", action: nil, keyEquivalent: "")
        menu.addItem(.separator())
