implementing the repository