Refactor to extract common component init code into its own class to serve as a stateless version of the class, and then allow the existing abstract class to add the stateful data provider logic