Repository interface and abstract classe