refactor, add repo implementation