added dynamic iterator