finish stream api

also migrated some of the iterators to the stream api