add Adaptor pattern