Refactored everything to custom providers.