added cache system