Implement some more of the provider framework.