From: Trans Date: 2005-11-11T03:27:14+09:00 Subject: Re: Golf, anyone? I found that this this did NOT extend down the inheritance chain for those objects, though. I was forced to override the inherrited method on the initial object so I could place the 'properties' definition in each subclass. This is my least favorite part of my solution. Your view is far from uncommon. Have a look at: http://www.rcrchive.net/rcr/show/325 Also, there seems to be a bit some difficulty between what you state you want and the example you present. You say: If another class includes the module, it should have its own class variable and accessor. But your exmaple has it that a subclass will share the same @prop (Ie. Baz -> Bar). Which appreantly is why you added the superclass call. (Notice also that Robert's example doesn't handle this). So I'm wondering which you really want. Basically you asking two different things: Standard module method inheritance (which has independent class instance vars) or Or module method inheritance with addtioanl class variable inheritance. In either case here are possiblities using Facets. Method inheritance: include 'facet/class_inherit' module Foo class_inherit do def prop @prop ||= [] end end end or with variable inheritance: include 'facet/inheritor' module Foo inheritor :prop, [], :+ end Note this last example requires the use of bang method add to the array, eg. a.prop! << 'p1" T.