add adapter/factory/proxy