Observer design pattern added