adapter
flyweight