Refactor the rest of the repositories to be more abstract