facade design pattern. add logging too