add Repository and Cache interface