refactored... - cleaned up

@gaurav-chawla, we need to inject the Provider component
added Impl file