use concrete types for iterators instead of type aliases exposing non-public types