completed step 4; i think my implementation is correct