add Adapter Pattern