Florent Guillaume writes: > ... > def _setPropValue(self, id, value): > self._wrapperCheck(value) > old_value = getattr(aq_base(self), id, None) > setattr(self, id, value) > if hasattr(aq_base(self), 'manage_afterPropertyChange'): > self.manage_afterPropertyChange(id, old_value) That's called very often (for each single property). I would prefer it in "manage_changeProperties" and friends. Dieter