changing the module to use provide() instead
changed the readme with new sample code
minor refactoring
refactoring the tests