fix iterate func