Second draft of Template Method