row iterator abstraction