lots of rewrites and slowly building transforms