Is there an "official" way to get from the value returned by "hash" to the Fixnum that's actually used for hashing? Or is this considered to be implementation-dependent? A few small experiments: irb(main):001:0> class C irb(main):002:1> def hash; "abc"; end irb(main):003:1> end => nil irb(main):004:0> a = {} => {} irb(main):005:0> a[C.new] = nil => nil irb(main):006:0> class D irb(main):007:1> def hash; self; end irb(main):008:1> end => nil irb(main):009:0> a[D.new] = nil NoMethodError: undefined method `%' for #<D:0x7c53454> from (irb):9:in `[]=' from (irb):9 from :0 irb(main):010:0> class D irb(main):011:1> def % *args; self; end irb(main):012:1> end => nil irb(main):013:0> a[D.new] = nil => nil irb(main):014:0> Thanks, -Curt -- Curt Hagenlocher curth / microsoft.com