             make.edges.equalToSuperview()
         }
     }
+    
+    func numberOfSections(in tableView: UITableView) -> Int {
+        sections.count
+    }
 
     func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
-        return 4
+        sections[section].numberOfRows
     }
 
     func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

                make.leading.trailing.equalToSuperview()
            }
            return cell
        }
        return nil
    }

    func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
        switch (indexPath as NSIndexPath).row {
        case 0:
            // We ask for the height before we do a layout pass, so manually trigger a layout here
            // so we can calculate the view's height.
            headerView.layoutIfNeeded()

            return headerView.systemLayoutSizeFitting(UIView.layoutFittingCompressedSize).height
        default: break
        }

        return 44
    }

    func tableView(_ tableView: UITableView, shouldHighlightRowAt indexPath: IndexPath) -> Bool {
        return (indexPath as NSIndexPath).row != 0
    }

    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        var url: URL?
        switch (indexPath as NSIndexPath).row {
        case 1:
            url = URL(string: "https://support.mozilla.org/\(AppInfo.config.supportPath)")
        case 2:
            url = Bundle.main.url(forResource: AppInfo.config.rightsFile, withExtension: nil)
        case 3:
            url = URL(string: "https://www.mozilla.org/privacy/firefox-focus")
        default: break
        }

        pushSettingsContentViewControllerWithURL(url)

        tableView.deselectRow(at: indexPath, animated: false)
    }


        return tableView
    }()

    private var sections = AboutSection.allCases
    private let headerView = AboutHeaderView()

    override func viewDidLoad() {
