templated all fns but one