Applied Template Method Pattern