add generic repository and unit of work class