facade and observer