refactored providers