> ztrick.rb:21:in '__send__': undefined method 'Outer::Inner::dothis' > for main:Object (NoMethodError) > from ztest.rb:21 It does not work because send will only call a method of the object you call it on. Outer::Inter::dothis is not a method name, but the name of a module with a method name at the end. But there is a way for it to work, just replace your __send__ with a call to my little smart_call: def smart_call(name, *params) array = name.split(/::/) # array[0...-1] contains the modules list # array[-1] contains the class name array[0...-1].inject(Kernel) { |memo, obj| memo.const_get(obj) }.send(array[-1], *params) end I'm sure it could be written in a better way, but I am not a pro in Ruby ^o^ It just gets the wanted module (using const_get) and calls the method on it. Regards, Vincent Isambart