self-updating thunks