iterator and startegy