TemplateMethodPattern