added a cache interface