with immutable
with cursor working