Refactor change detection

WIP
shouldn't this be `nextEnabled.prevEnabled = prevEnabled`?