why does monoid take DegreeRank and newRing take DegreeLength?