added implementation of abstract repo