add ProviderFactoryInterface
Merge branch '1.0'