added cache method