add iterate method