add generic string functions