Reorganize Observer pattern structure