observer pattern
observer patter