Added Template Method Pattern