chapter 3 templater implementation