improve exception handling, ensure time always resets, regardless of failure mode