Matz,
As we discussed at LoneStar, I have the following proposal:

given the following class:

class Person
  def speak(words)
    puts words
  end
end

It should be possible to do the following:

module Exclaimer
  def speak(words)
    super("#{words}!")
  end
end

class Person
  prepend Exclaimer
end

and then have:

Person.new.speak("matz") #=> matz!

Effectively, prepend would prepend a module to the class' ancestor chain.
Implementation-wise, it means that all methods on a class are put into an
implicit module, or an implicit subclass is created for each new class that
can have modules mixed into it (via prepend).

We also discussed aliasing unshift to prepend for Arrays, since
shift/unshift is a source of much confusion.

-- 
Yehuda Katz
Developer | Engine Yard
(ph) 718.877.1325