add a TotalOrd trait