abstractprovidersholder refactoring