Add cache function