Add TDatum
Accept tuple insteadof user-defined object
Fix test