add template fn