Implementation until step 4