add a cache interface