Refactor

Changed to generic repo, service layer, unit of work