Nice summary Warren. There's still a little bit more to it though. If one serachs ruby-talk one finds that there are also other less obvious pacularities about Range --not that they are all the significant but they are there. The problem I see is that if #member? goes back to being essentially equivalent to #to_a.include? We're right back to the original problem exactly as you point out: > This was mainly done as an optimization, > since checking 1 <= x <= 1000000 is a whole lot faster than Enumerating > all 1000000 elements. It also allowed Float Ranges to work as well. How could one optimize a _cutstom_ memebership for a Range then? You can't, so our choices for #member? trap us between inconsistant functionaity or significant ineffeicency. And it still does not address the underlying causes: #succ and #<=> are incompatabile in the String class, and might also be so for other classes. I've offered the best solution generally possible for this issue: It corrects the underlying cuase, fixes the inconsistant functionality and maintains efficiency. What more can one ask? Nonetheless no one seems interested in it. I tend to think the reason is becuase it introduces a new method (#cmp), but since no one has even touched on it, how do I know? I'm at a loss. Do people just not get it? Did I not explain it well enough? Did I miss something? Or is that people just prefer to stew around in their own preconceptions? T.