adding router and observer