Ah, I seems that ActiveSupport class_inheritable_accessor, seems to do the same. class_inheritable_accessor (or what I showed) uses instance variables (@foo) at the Class instance level. These variables are not shared across all subclasses. require 'activesupport' class Base class_inheritable_accessor :value self.value = '123' end class Derived < Base; end class Derived2 < Base; end Derived.value #=> '123' Derived.value = 'abc' Base.value #=> '123' Derived2.value #=> '123 It becomes a problem when using a mixture of libraries which all define methods on Class, Kernel or Object. Obviously namespace clashes can happen, (and indeed they have already). Best regards, dreamcat4 dreamcat4 / gmail.com