Slots are only used here because they provide descriptors that *almost* do what I needed, they are not perfect.  Copying predecessor slots is necessary to avoid needing to reference the parent class decscriptors.  From the [python docs](http://docs.python.org/release/2.6.8/reference/datamodel.html?highlight=__slots__#__slots__):

    If a class defines a slot also defined in a base class, the instance variable defined by the base class slot is inaccessible (except by 
    retrieving its descriptor directly from the base class). This renders the meaning of the program undefined. In the future, a check may be 
    added to prevent this.

If you or anyone wants to write descriptors that work better than slots, please do.  I only used them because they do most of what I needed, if they do have some weak spots.