Gets mostly through step 3