observer pattern image