generate data types with type arithmetic