Sebastian Padsaid: > So, is there any way to "force" the methods to be overwritten, even if > it appears to be superfluous? Or am I using an unsuitable approach to > begin with? You might want to consider the Strategy Pattern ... create an object that implements your plugin method and then delegate to that object whenever the plugin is called. By using a separate object, it becomes much easier to switch strategies at runtime. class StrategyA def pluginMethod puts "A" end end class StrategyB ... similar to above end class M def customize(param) if param == "useA" then @strategy = StrategyA.new elsif param == "useB" then @strategy = StrategyB.new else raise someException end end def runAlgorithm pluginMethod end def pluginMethod @strategy.pluginMethod end end The strategy object is a bit less intimate with your original object than the extend module approach ... this could good or bad, depending on what you need. -- -- Jim Weirich jim / weirichhouse.org http://onestepback.org ----------------------------------------------------------------- "Beware of bugs in the above code; I have only proved it correct, not tried it." -- Donald Knuth (in a memo to Peter van Emde Boas)