implemented UoW pattern