Added ProviderBuilder
refactored ExternalProviderBuilder name
refatored ExternalProviderBuilder to just Provider, so that internal methods can be made available to children
saving work