make use of remove_reference_t and replace uniformly typename by class on template parameters.