Design Patterns: Template Method