add iterators
regenerate output
add unit tests