Added repository pattern and unit of work