Design Pattern 3 TemplateMethod