adapter pattern added