1.template method, state