         
         // observe defaults change
         self.defaultsObservers = [
-            UserDefaults.standard.observe(key: .theme, options: [.old, .new]) { [unowned self] change in
-                guard change.old == nil || self.theme?.name == change.old else { return }
-                
+            UserDefaults.standard.observe(key: .theme) { [unowned self] _ in
                 let themeName = ThemeManager.shared.userDefaultSettingName(forDark: self.view.effectiveAppearance.isDark)
                 self.setTheme(name: themeName)
             },

        
        guard
            let oldName = notification.userInfo?[Notification.UserInfoKey.old] as? String,
            oldName == self.theme?.name else { return }
        
        let newName = (notification.userInfo?[Notification.UserInfoKey.new] as? String) ?? ThemeManager.shared.userDefaultSettingName(forDark: self.view.effectiveAppearance.isDark)
        
        self.setTheme(name: newName)
    }

            guard
                self.view.window != nil,
                let currentThemeName = self.theme?.name,
                let themeName = ThemeManager.shared.equivalentSettingName(to: currentThemeName, forDark: self.view.effectiveAppearance.isDark)
                else { return }
            
            self.setTheme(name: themeName)
