change to support all data types, rather than just char *