added AdapterPattern