templates are now defined for each datatypes