semantic refactor