Added TemplateMethod pattern