add design pattern adapter