added facade observer strategy