Provider refactoring