Observer Pattern Refactoring