On page 221 of the Pickaxe in table 18.4 if I'm interpreting it correctly, you should be able to overload the '!' operator (since there is a checkmark to the left) but the interpreter complains when I try: class Foo def !() #... end end I notice that the '~' operator is overloadable and it works as I would expect, so that I can say: a = MyObj.new ~a Phil