Implementing real world example of Template method pattern