support user defined send object