Playing with Design Patterns - added Template Method Pattern