> How do I change the mixed-in method at runtime ? You could mean a few things by this. 1) You can change a modelDuck to fly using a different strategy as shown in the test code already given: modelDuck.fly modelDuck.extend FlyRocketPowered 2) You can change all ModelDucks' fly strategy like this: class ModelDucks include FlyRocketPowered end or like this: ModelDucks.instance_eval {include FlyRocketPowered} 3) You can change the implementation of a strategy like this: module FlyRocketPowered def fly() puts "Upgraded rockets!!!" end end or like this: FlyRocketPowered.instance_eval { define_method(:fly) { puts "Upgraded rockets!!!" } } > Also, is the mixin class-level or object-level? Above, I defined instance (object-) methods in the fly and quack modules. By including those modules, classes (ducks) gain those instance methods. In my delegation example, I defined fly as a method of the FlyWithWings class itself (call this like so: FlyWithWings.fly). Cheers, Dave