Added Provider class to serve as a base/ interface for other Providers, includes @build factory function