Observer Pattern
Chain of Responsibility