add design patter: adapter and facade