add template generation