write blog about observer pattern