add more into Observer Pattern