last implementation had bugs. new implementation requires `enabledProperty` to be true