created generic provider factory