refactor LanguageService