observer pattern is added.