more type restriction
methods
refactor
generic repository