introduced generic repository