value function iterator -- initial commit