change cached interface, add exptime
use when to determine when cache should take place