             break
         }
         
-        return Item(disclosureType: disclosureType, type: self, title: title, isSwitchOn: isSwitchOn, buttonTitle: buttonTitle)
-    }
+        self.title = title
+        self.disclosureType = disclosureType
+        self.buttonTitle = buttonTitle
+    }
+}
+
+private enum ItemType: Int {
+    case syncSavedArticlesAndLists, showSavedReadingList, eraseSavedArticles, syncWithTheServer
 }
 
 @objc(WMFStorageAndSyncingSettingsViewController)

    private var indexPathsForCellsWithSwitches: [IndexPath] = []
    
    private var sections: [Section] {
        let syncSavedArticlesAndLists = ItemType.syncSavedArticlesAndLists.item(isSwitchOnByDefault: isSyncEnabled)
        let showSavedReadingList = ItemType.showSavedReadingList.item(isSwitchOnByDefault: dataStore?.readingListsController.isDefaultListEnabled)
        let eraseSavedArticles = ItemType.eraseSavedArticles.item()
        let syncWithTheServer = ItemType.syncWithTheServer.item()
        
        let syncSavedArticlesAndListsSection = Section(headerTitle: nil, footerText: WMFLocalizedString("settings-storage-and-syncing-enable-sync-footer-text", value: "Allow Wikimedia to save your saved articles and reading lists to your user preferences when you login to sync", comment: "Footer text of the settings option that enables saved articles and reading lists syncing"), items: [syncSavedArticlesAndLists])
        

        }
        
        cell.delegate = self
        cell.configure(disclosureType, title: settingsItem.title, iconName: nil, isSwitchOn: settingsItem.isSwitchOn, iconColor: nil, iconBackgroundColor: nil, buttonTitle: settingsItem.buttonTitle, controlTag: settingsItem.type.rawValue, theme: theme)
    
        if settingsItem.disclosureType == .switch {
            indexPathsForCellsWithSwitches.append(indexPath)
