refactor
add dict iterator