implementing DData observer pattern