Consider the snippet below. The idea is that I have provider implementations that extend a base provider, and each provider accepts a settings object that extends a base setting