Using Ring ModX directly exposes the way the type is implemented. For example, when I change Ring to Bigword I will have to chase down all the code that uses Ring directly. Same if the implementation changes. How about we create 2 type aliases for each ModX? HashX and WordX ? That way you use the type alias that conveys the best information.