Template Method Pattern Completed