Here is the list of changes in the programming interface of MetaRuby; they will matter if you have written code for MetaRuby 0.5. If you are using the assertion-checking features of the mixin classes, you have a class built like: class Foo include ThingMixin include ThingInterfaceSafe def safe_foo ... end def safe_bof ... end def safe_zut ... end end you'll have to change it to: class Foo module Implementation def foo ... end def bof ... end def zut ... end end include ThingMixin include Implementation # comes after *Mixin and before *Contract include ThingContract end this means you can now remove assertion-checks just by commenting out the contract inclusion. furthermore, a few interface methods have been renamed: ArrayInterface#get_many -> get_seq ArrayInterface#put_many -> put_seq StringInterface#get_many -> get_seq StringInterface#put_many -> put_seq HashInterface#[]= -> put (also now must return nil instead) the four first is to reserve the #get_many and #put_many names for future additions for which those names are more appropriate. the last one is to: make Hash* more like Array* and String*; increase efficiency; make #put do exactly one thing (#[]= does two: it returns #get) matju