Refactored to provide some more parameters in the abstraction layer
itself