modify adapter pattern