classic ET with enable_if to avoid ambiguity