reworked repo + unit of work