adapter pattern. Adapter implements target to adapt adaptee. Client uses
target.
facade pattern and least-knowledge principle