stateful updates