template method pattern example: barista