typing user defined types