semantic refactoring