observer pattern step 1