Add DataIterator with tests