> In my opinion, if I understood the problem correctly, if a > function/method ends with a 'return self (or whatever)' then > that's what > should be returned. There is no acceptable excuse for nor > returning it. Which is exactly what the method will do... if you call it as a method. When you call it as an assignment, it returns the assigned value. Anything else would give rise to confusion of anybody trying to understand the code when used. class A def a=(x) @x = x return "blah" end end A.new.a='xx' => 'xx' A.new.send(:a=,'xx') => 'blah' It also stops you from shooting yourself in the foot with: class A def a=(x) @x = x recalculate_things end end Which would return the result of recalculate_things... an unexpected result, and I'm guessing the motivation behind the change. Dan.