new providers, and refactors