cached decorator update