type parameter for IComparable