change the way to cache weak update