refactoring, semantics