added AbstractRepository class