Implement the provider pattern
update readme with async test runner sample
update doc