adapter decorator