Observer pattern done right!