introduce adaptor class
much better layour