use UDT. compile passed