Added Observer Pattern