convert to Provider to allow mocking etc