implemented unit of work -> service -> repository data structure