Hi. I'm looking for some fresh naming ideas... and other tips in general. I have this thing called ArrayMixin, ArrayInterface, ArrayContract, which are probably awful names. Why is ArrayMixin called that way, given that all three listed above are mixins? Maybe that is because it actually adds functionality, whereas ArrayInterface and ArrayContract only pretend to. Does it make those two less "mixin" than ArrayMixin ? Should suffixes Interface, Contract be replaced by abbreviations? Those are bound to be commonly used suffixes, so... here is a proposal: ArrayMixin -> HollowArray ArrayInterface -> MicroArrayI ArrayContract -> MicroArrayC here's how it sounds after this renaming: MicroArrayI is a spec for minimal arrays. Including it in a class is like saying "this class should support all of these operations". MicroArrayC is a boosted version of MicroArrayI: it actually verifies how operations are used and how they are performed. Now if you include HollowArray into a MicroArray-supporting class, you get a full Array emulation. I think there could also be a new ArrayI module that would reduce: Array===foo || HollowArray===foo to: ArrayI===foo because I'd do: module ArrayI; end module HollowArray; include ArrayI; end class Array; include ArrayI; end Now back to the naming. "MicroArray" and "HollowArray" should show the concept better, but I suspect some of you may have more, hum, enlightened ideas for names. Idem for suffixes I,C. Also I'd like to know whether anyone actually uses MetaRuby. I know there has been well over a hundred downloads of the last tarball, but by itself that doesn't mean anything. Awaiting some feedback now. matju