added abstract repo and entity