refactor(change_detection): make RecordRange responsible for removing iself