Adapter pattern
Bridge pattern