Thanks for the replies, as ever very helpful.

>> PRWidgets overrides #write:using: to keep track of its attribute values in its properties dictionary (instead of widget
>> specific accessors). This design decision facilitates the implementation and maintenance of specific Widgets.

This helped me understand  the mechanism why PRWidget derived objects store their properties in a directory rather than via an accessor. I experimented by overriding #write:using in my PRWidget derived class, to reinstating the default implementation in Object thus:

write: anObject using: aDescription
aDescription accessor write: anObject to: self

Then magically the setters in my derived class where called as I'd originally anticipated.

I understand that sometimes it's handy to be able to dynamically add fields to an object, which is when it makes sense to use a Dictionary, however to aid my understanding it seems much simpler to store properties in instance variables accessed via accessors. Will I fall into any problems if I use an accessor pattern on my PRWidget derived classes by ensuring that #write:using: reimplements the Object>>write:using: ?

Nick