refactor
add where to iterator