Refactor change detection

WIP
why ```rr.ProtoRecordRange``` and not just ```ProtoRecordRange```?