Refactoring Abstract + BasicRepository, shit but no other way