[x86.bison:695]gfb> ruby -v ruby 1.6.7 (2002-03-01) [i386-solaris2.8] I have a module that I will use as a mixin: module Original def foo pust "Original#foo()" end end include Original foo # => Original#foo() Everything is OK so far. Then I would like to mix another module into Original that redefines method foo: module Another def foo puts "Another#foo()" end end module Original include Another end foo # => Original#foo() Here I have a problem -- Original's foo is still being called (and I expect Another's). The only way to achieve what I want is to redefine module Another above to: module Another def self.append_features(mod) super mod mod.module_eval %Q{ def foo puts "Another#foo()" end } end end Am I missing something? Is there a way to go without eval? Thanks in advance, Gennady.