add adapter, template method pattern exmple