improve cache interface