Add Iterator struct based iteration