Only ever call back if state has changed