template gen