added:  'onSet' & 'onRemove' callback support

added:  'onSet' & 'onRemove' callback support
Why a `return`? The function's return value is ignored.