mostly cosmetic; replace specialization overloads with enable_if