Здесь темплейт какраз неудобен, не так обобщает, как функция