template compiler