v2: add `isPersisted`
v2: cache updates instead of replacing items
v2: do not update cached objects if they are dirty
build last few commits of changes