Simple watcher pattern implementation based on 'dirty checking' algorithm