added cache_t as an abstract data type so multiple independent caches can be created