simplified exceptions, step 2 and 3 of stage 3 added