refactor repo to abstractRepo
fixes #19