added static cache() method