implemented adapter and facade as directed