support Marshaler/Unmarshaler.