big rewrite step1