instantiation and substitution