Update tests, refactor AbstractProvider