Ah, in case it is not clear, where I find the metaphor broken is in that you= can add methods to a mixin and have them available in classes that already i= ncluded it, but if you include a new ancestor, then method dispatch in class= es that already included the module aren't aware of the new chain. Conceptually, in my view, you are augmenting the module either way, and a me= thod dispatch that followed really dynamically the pointers of the ancestor c= hain at the time of the call would find the methds no matter how you augment= the mixin. So I wonder whether this is a design sacrifice for optimization purposes.