added Ring, CommutativeRing, IntegralDomain and Field