more progress on iterator