refactor expression