Added base repo class and enforced use by child classes
Merge onto new branch