Curiously recurring template pattern