deal with multiple data types