concrete example of template method