:) you would expect it yes :) (I did) Without the help of the guy's here I would have probably taken a while to figure it out myself. It's clear for me now. The new rule, written into my brain: methodes whose names end in '=' always return the first argument. Writing this down made me think: with multiple arguments, does it return them all, or just the first. I gave it a try, and it seems like I'm not allowed to give more then one argument to an methodes whose names end in '='. Can anyone confirm this as a rule? irb(main):001:0> class A irb(main):002:1> def a=(b) irb(main):003:2> puts 'in a=(b)' irb(main):004:2> @a = b irb(main):005:2> return 'c' irb(main):006:2> end irb(main):007:1> def a irb(main):008:2> return a irb(main):009:2> end irb(main):010:1> end => nil irb(main):011:0> aa = A.new => #<A:0x2c1067c> irb(main):012:0> aa.a = 'b' in a=(b) => "b" irb(main):013:0> class X irb(main):014:1> def x=(y, z) irb(main):015:2> puts 'in x=(y, z)' irb(main):016:2> @x = [y, z] irb(main):017:2> return 'w' irb(main):018:2> end irb(main):019:1> def x irb(main):020:2> return @x irb(main):021:2> end irb(main):022:1> end => nil irb(main):023:0> xx = X.new => #<X:0x2bfd194> irb(main):024:0> xx.x=('y', 'z') SyntaxError: compile error (irb):24: syntax error xx.x=('y', 'z') ^ from (irb):24 irb(main):025:0>