add repository's interface and implement