reworked exception handling and differencing