>>>>> "R" == Raja S <raja / cs.indiana.edu> writes: R> keys,values = h.keys, h.values # disassemble R> new_vals = norm_v (values) # normalize R> Hash.make (keys, new_vals) # reassemble h1 = {} h.each { |k, v| h1[k] = norm_v(v) } no ? >> p.s. is there a way to override a class method like Hash.new -without- >> sub-classing? It appears that class methods can't be aliased hence >> redefinition of something like Hash.new doesn't seem possible? class Hash class << self alias :old_new :new def new(ifnone) h = old_new(ifnone) # do what you want with h h end alias :old_bra :[] def [](*args) h = old_bra(*args) # do what you want with h h end end end no ? but you must explicit call Hash::new and not use, for example, 'a = {1 => 2}' Guy Decoux