template helper function