Refactored Factory + Provider for better naming.
Renamed IAutoInitialize to IInitializable