Additional thought, given the extra methods required, prehaps we could have a `Differ` and ` ColouredDiffer`