patterns_observer