         super.init()
         
         // cache bundled theme names
-        let themeURLs = Bundle.main.urls(forResourcesWithExtension: self.filePathExtension, subdirectory: self.directoryName) ?? []
-        self.bundledThemeNames = themeURLs.lazy
+        self.bundledThemeNames = Bundle.main.urls(forResourcesWithExtension: self.filePathExtension, subdirectory: self.directoryName)!
             .filter { !$0.lastPathComponent.hasPrefix("_") }
             .map { self.settingName(from: $0) }
             .sorted { $0.localizedCaseInsensitiveCompare($1) == .orderedAscending }

    /// load theme dict in which objects are property list ready.
    func settingDictionary(name: String) -> ThemeDictionary? {
        
        guard
            let themeURL = self.urlForUsedSetting(name: name),
            let themeDictionary = try? self.loadSettingDictionary(at: themeURL)
            else { return nil }
        
        return themeDictionary
    }
    
    

    /// load theme names in user domain
    override func loadUserSettings() {
        
        // load user themes if exists
        let userThemeNames = self.userSettingFileURLs.map { self.settingName(from: $0) }
        
        self.themeNames = OrderedSet(self.bundledSettingNames + userThemeNames).array
        
        // reset user default if not found
        if !self.themeNames.contains(UserDefaults.standard[.theme]!) {
            UserDefaults.standard.restore(key: .theme)
        }
    }
    
