cache definition and interface