add iterator
add prototype