almost done with cache system