     }
 
     static var allCellClasses: [IBConstructable.Type] {
-        [SettingsSwitchTableViewCell.self, SettingsGithubTableViewCellTableViewCell.self, SettingsInfoTableViewCell.self]
+        [
+            SettingsSwitchTableViewCell.self,
+            SettingsProjectLinkTableViewCell.self,
+            SettingsInfoTableViewCell.self
+        ]
     }
 
     func cellClass(action: Action) -> IBConstructable.Type {
         switch (self, action) {
         case (_, .switch(_)):
             return SettingsSwitchTableViewCell.self
-        case (.github, _):
-            return SettingsGithubTableViewCellTableViewCell.self
+        case (.projectLinks, _):
+            return SettingsProjectLinkTableViewCell.self
         default:
             return SettingsInfoTableViewCell.self
         }

                models.insert(friendsModel, at: 0)
            }
            return models
        case .github:
            return [Model(action: .open(url: Constants.criticalMapsiOSGitHubEndpoint))]
        case .info:
            return [Model(title: String.settingsWebsite, action: .open(url: Constants.criticalMapsWebsite)),
                    Model(title: String.settingsTwitter, action: .open(url: Constants.criticalMapsTwitterPage)),


import UIKit

enum Section: CaseIterable {
    typealias AllCases = [Section]

    static var allCases: Section.AllCases {
        [.preferences, .projectLinks([.github, .criticalMapsDotIn]), .info]
    }

    case preferences
    case projectLinks([SettingsProjectLinkTableViewCell.CellConfiguration])
    case info

    struct Model {
