Something I would like to see here is a base class called Repository constructed like an abstract class with methods subclasses have to override. That will make it way better maintainable.