use AbstractProvider.