add template_method