getting the data types of assignments right is not easy