  We present an approach to describing refactorings that abstracts away from
particular refactorings to classes of similar transformations, and presents an
implementation of these that works by substitution and subsequent rewriting.
Substitution is language-independent under this approach, while the rewrites
embody language-specific aspects. Intriguingly, it also goes back to work on
API migration by Huiqing Li and the first author, and sets refactoring in that
general context.
