REWORK --- USING OBSERVER PATTERN