replace the template version of traits with real c++ concepts
replace the template version of traits with real c++ concepts