Using non-atomic structs for storing updates, this means that we may have to use vals instead of dirty_vals.  Should check this commit.