Hi guys Class>>hasPoolVarNamed: aString "Return whether the receiver has a pool variable named: aString" self hasSharedPools ifTrue: [ self sharedPools do: [:each | (each usesClassVarNamed: aString) ifTrue: [ ^true ]]] ifFalse: [ ^false ]. ^false So this means to me that a subclass of a shared pools user does not inherit the fact that its superclass effectively use a sharedPool. I would prefer that this would be the inverse. self assert: (RootClassPoolUser hasPoolVarNamed: 'Author'). "a subclass " self assert: (SubclassPoolUser hasPoolVarNamed: 'Author'). What do you think? may be we should rename it hasLocalPoolvarNamed: especially since we have usesPoolVarNamed: which takes into account the hierarchy only when the class starts to use a shared pool (oh boy) and is bogus (I wrote probably that code of course without tests. Now I have them.). Class>>usesPoolVarNamed: aString "Return whether the receiver has a pool variable named: aString" self hasSharedPools ifTrue: [ self allSharedPools do: [:each | (each usesClassVarNamed: aString) ifTrue: [^true]]] ifFalse: [^false]. ^false I wrote it now with tests as follows: Class>>usesPoolVarNamed: aString "Return whether the receiver has a pool variable named: aString" self allSharedPools do: [:each | (each usesClassVarNamed: aString) ifTrue: [^true]]. ^ false Stef