observer state decorator