step 3 is implemented