implementing observer
implementing observer