Observer pattern.