iterator and traits