simplified template generation