>> class Foo;end => nil >> f = Foo.new => #<Foo:0x10189038> >> def f.bar; puts "ja"; end => nil >> f.bar ja => nil >> f.dup.bar NoMethodError: undefined method `bar' for #<Foo:0x101832f0> from (irb):5 >> f.clone.bar ja => nil Here's a technical description: "While clone is used to duplicate an object, including its internal state, dup typically uses the class of the descendent object to create the new instance." http://www.ruby-doc.org/docs/rdoc/1.9/classes/Object.html#M000889 I'm interested in the reasoning behind this. Kind regards robert