I would prefer that we don't include type_traits here?