iterator
add Observer