messy implementation of post-cache updating