Naive Observer design pattern