need higher scope iteration