add adapter, composite, proxy