add providerFactory