changed contract to include exception details