Incorporated Adapter pattern and removed UserProvider