add cache method