Design patterns: MVC + Observer