refactored through step 3.