big rewrite step 3