use better constructions for substitutions