add Adapter pattern