implemented facade and adapter