Other being able to sanity check values in a setter is there a more underlying reason to prefer properties to public variables?