language refactor