improved propertyChangeListeners handling