#curiously recurring template pattern