add multiple iteration support