         tableView.reloadData()
     }
 
-    //MARK: Private
-    
+    //MARK: UITableViewDataSource
+
     public func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
         return dataStore.options.count
     }
-    
-    //MARK: UITableViewDataSource
     
     public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
         let cell: Cell = tableView.dequeueReusableCell(indexPath: indexPath)

    public struct Configuration {
        let shouldSelectItemAtIndexPath: (IndexPath) -> Bool
        let didSelectItemAtIndexPath: (IndexPath) -> ()

        public init(shouldSelectItemAtIndexPath: @escaping (IndexPath) -> Bool = { _ in return true }, didSelectItemAtIndexPath: @escaping (IndexPath) -> () = { _ in }) {
            self.shouldSelectItemAtIndexPath = shouldSelectItemAtIndexPath
            self.didSelectItemAtIndexPath = didSelectItemAtIndexPath
        }
    }
    

        return true
    }
    
    public func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
        if let _ = configuration.sectionFooter() {
            return UITableView.automaticDimension
        } else {
            return 0
        }
    }

    public func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView? {
        let footer = configuration.sectionFooter()
        if let footer = footer, tableView.separatorStyle == .singleLine {
            let separatorName = "SelectableTableViewDataSource.Separator"
            if let sep = footer.layer.sublayers?.first(where: { $0.name == separatorName }) {
                sep.removeFromSuperlayer()
            }
            // create layer with separator, setting color
            let sep = CALayer()
            sep.name = separatorName
            sep.backgroundColor = tableView.separatorColor?.cgColor
            sep.frame = {
                // recreate insets from existing ones in the table view
                let insets = tableView.separatorInset
                let width = tableView.bounds.width - insets.left - insets.right
                return CGRect(x: insets.left, y: -0.5, width: width, height: 0.5)
            }()
            footer.layer.addSublayer(sep)
        }
        return footer
    }
    
    //MARK: UITableViewDelegate
        
    public func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
