added generic iRepository interface