generalize templates