implement event value cache