observer pattern
loss my observer pattern