add type inference for type constructor
add simple data type constructors