added Observer pattern with a normal data object