1. Instead of overriding updateTableContents(shouldReload:) in every subclass let the base class to do the reloading and subclasses will just provide contents for the OWSTableViewController2.
2. Remove unnecessary rebuilding of the OWSTableViewContents in didLayoutSubviews(). Do not reload if content doesn't change (it does not in any of the subclasses).
3. Instead of keeping a pre-configured UIStackView in case there's footer content to show - keep a UIView which is more lightweight. Subclasses just add their own footer content to that.