breaking sf-poly, but moving to composed substitutions for efficiency
fixing bad performance bottleneck in delayed substitutions; changed the representation of substitutions; mac goes through easily now