add iterate interface