diff --git a/package.json b/package.json
index 6c3c877..39bff76 100644
--- a/package.json
+++ b/package.json
@@ -519,6 +519,7 @@
     "which": "^2.0.2"
   },
   "dependencies": {
-    "typescript": "3.8.3"
+    "typescript": "3.8.3",
+    "vscode-languageserver-textdocument": "^1.0.1"
   }
 }
diff --git a/src/server/features/baseCodeLensProvider.ts b/src/server/features/baseCodeLensProvider.ts
index 8a7b1fb..ee1224b 100644
--- a/src/server/features/baseCodeLensProvider.ts
+++ b/src/server/features/baseCodeLensProvider.ts
@@ -2,7 +2,8 @@
  *  Copyright (c) Microsoft Corporation. All rights reserved.
  *  Licensed under the MIT License. See License.txt in the project root for license information.
  *--------------------------------------------------------------------------------------------*/
-import { CancellationToken, CodeLens, Emitter, Event, Range, TextDocument } from 'vscode-languageserver-protocol'
+import { CancellationToken, CodeLens, Emitter, Event, Range } from 'vscode-languageserver-protocol'
+import { TextDocument } from 'vscode-languageserver-textdocument'
 import { CodeLensProvider } from 'coc.nvim/lib/provider'
 import * as Proto from '../protocol'
 import { ITypeScriptServiceClient } from '../typescriptService'
diff --git a/src/server/features/bufferSyncSupport.ts b/src/server/features/bufferSyncSupport.ts
index 8e0f26b..7f766b6 100644
--- a/src/server/features/bufferSyncSupport.ts
+++ b/src/server/features/bufferSyncSupport.ts
@@ -3,7 +3,8 @@
  *  Licensed under the MIT License. See License.txt in the project root for license information.
  *--------------------------------------------------------------------------------------------*/
 import { Uri, disposeAll, workspace } from 'coc.nvim'
-import { CancellationTokenSource, Emitter, Event, DidChangeTextDocumentParams, Disposable, TextDocument, TextDocumentContentChangeEvent } from 'vscode-languageserver-protocol'
+import { CancellationTokenSource, Emitter, Event, DidChangeTextDocumentParams, Disposable, TextDocumentContentChangeEvent } from 'vscode-languageserver-protocol'
+import { TextDocument } from 'vscode-languageserver-textdocument'
 import Proto from '../protocol'
 import { ITypeScriptServiceClient } from '../typescriptService'
 import API from '../utils/api'
diff --git a/src/server/features/completionItemProvider.ts b/src/server/features/completionItemProvider.ts
index 67bdfcf..432b00c 100644
--- a/src/server/features/completionItemProvider.ts
+++ b/src/server/features/completionItemProvider.ts
@@ -2,7 +2,8 @@
  *  Copyright (c) Microsoft Corporation. All rights reserved.
  *  Licensed under the MIT License. See License.txt in the project root for license information.
  *--------------------------------------------------------------------------------------------*/
-import { CancellationToken, Command, CompletionContext, CompletionItem, InsertTextFormat, MarkupContent, MarkupKind, Position, TextDocument, TextEdit, CompletionList } from 'vscode-languageserver-protocol'
+import { CancellationToken, Command, CompletionContext, CompletionItem, InsertTextFormat, MarkupContent, MarkupKind, Position, TextEdit, CompletionList } from 'vscode-languageserver-protocol'
+import { TextDocument } from 'vscode-languageserver-textdocument'
 import { commands, workspace } from 'coc.nvim'
 import { CompletionItemProvider } from 'coc.nvim/lib/provider'
 import Proto from '../protocol'
diff --git a/src/server/features/definitionProvider.ts b/src/server/features/definitionProvider.ts
index 6fb077a..f36b39e 100644
--- a/src/server/features/definitionProvider.ts
+++ b/src/server/features/definitionProvider.ts
@@ -2,7 +2,8 @@
  *  Copyright (c) Microsoft Corporation. All rights reserved.
  *  Licensed under the MIT License. See License.txt in the project root for license information.
  *--------------------------------------------------------------------------------------------*/
-import { CancellationToken, Definition, Location, Position, TextDocument } from 'vscode-languageserver-protocol'
+import { CancellationToken, Definition, Location, Position } from 'vscode-languageserver-protocol'
+import { TextDocument } from 'vscode-languageserver-textdocument'
 import { DefinitionProvider, ImplementationProvider, TypeDefinitionProvider } from 'coc.nvim/lib/provider'
 import * as Proto from '../protocol'
 import { ITypeScriptServiceClient } from '../typescriptService'
diff --git a/src/server/features/directiveCommentCompletions.ts b/src/server/features/directiveCommentCompletions.ts
index b04ea76..25f3b50 100644
--- a/src/server/features/directiveCommentCompletions.ts
+++ b/src/server/features/directiveCommentCompletions.ts
@@ -3,7 +3,8 @@
  *  Licensed under the MIT License. See License.txt in the project root for license information.
  *--------------------------------------------------------------------------------------------*/
 
-import { CancellationToken, CompletionContext, CompletionItem, CompletionItemKind, CompletionList, Position, Range, TextDocument } from 'vscode-languageserver-protocol'
+import { CancellationToken, CompletionContext, CompletionItem, CompletionItemKind, CompletionList, Position, Range } from 'vscode-languageserver-protocol'
+import { TextDocument } from 'vscode-languageserver-textdocument'
 import { workspace } from 'coc.nvim'
 import { ITypeScriptServiceClient } from '../typescriptService'
 
diff --git a/src/server/features/documentHighlight.ts b/src/server/features/documentHighlight.ts
index e6a0a44..562f9b4 100644
--- a/src/server/features/documentHighlight.ts
+++ b/src/server/features/documentHighlight.ts
@@ -2,7 +2,8 @@
  *  Copyright (c) Microsoft Corporation. All rights reserved.
  *  Licensed under the MIT License. See License.txt in the project root for license information.
  *--------------------------------------------------------------------------------------------*/
-import { CancellationToken, DocumentHighlight, DocumentHighlightKind, Position, TextDocument } from 'vscode-languageserver-protocol'
+import { CancellationToken, DocumentHighlight, DocumentHighlightKind, Position } from 'vscode-languageserver-protocol'
+import { TextDocument } from 'vscode-languageserver-textdocument'
 import { DocumentHighlightProvider } from 'coc.nvim/lib/provider'
 import Proto from '../protocol'
 import { ITypeScriptServiceClient } from '../typescriptService'
diff --git a/src/server/features/documentSymbol.ts b/src/server/features/documentSymbol.ts
index 38fdadf..c88f6e3 100644
--- a/src/server/features/documentSymbol.ts
+++ b/src/server/features/documentSymbol.ts
@@ -2,7 +2,8 @@
  *  Copyright (c) Microsoft Corporation. All rights reserved.
  *  Licensed under the MIT License. See License.txt in the project root for license information.
  *--------------------------------------------------------------------------------------------*/
-import { CancellationToken, DocumentSymbol, Range, SymbolKind, TextDocument } from 'vscode-languageserver-protocol'
+import { CancellationToken, DocumentSymbol, Range, SymbolKind } from 'vscode-languageserver-protocol'
+import { TextDocument } from 'vscode-languageserver-textdocument'
 import { DocumentSymbolProvider } from 'coc.nvim/lib/provider'
 import * as Proto from '../protocol'
 import * as PConst from '../protocol.const'
diff --git a/src/server/features/fileConfigurationManager.ts b/src/server/features/fileConfigurationManager.ts
index 36fcb44..607329e 100644
--- a/src/server/features/fileConfigurationManager.ts
+++ b/src/server/features/fileConfigurationManager.ts
@@ -3,7 +3,8 @@
  *  Licensed under the MIT License. See License.txt in the project root for license information.
  *--------------------------------------------------------------------------------------------*/
 import { workspace, WorkspaceConfiguration } from 'coc.nvim'
-import { CancellationToken, TextDocument } from 'vscode-languageserver-protocol'
+import { CancellationToken } from 'vscode-languageserver-protocol'
+import { TextDocument } from 'vscode-languageserver-textdocument'
 import Proto from '../protocol'
 import { ITypeScriptServiceClient } from '../typescriptService'
 import API from '../utils/api'
diff --git a/src/server/features/folding.ts b/src/server/features/folding.ts
index f275045..37bf095 100644
--- a/src/server/features/folding.ts
+++ b/src/server/features/folding.ts
@@ -4,7 +4,8 @@
  *--------------------------------------------------------------------------------------------*/
 
 import { CancellationToken } from 'vscode-jsonrpc'
-import { FoldingRange, TextDocument } from 'vscode-languageserver-types'
+import { FoldingRange } from 'vscode-languageserver-types'
+import { TextDocument } from 'vscode-languageserver-textdocument'
 import { FoldingContext, FoldingRangeProvider } from 'coc.nvim/lib/provider'
 import { workspace } from 'coc.nvim'
 import Proto from '../protocol'
diff --git a/src/server/features/formatting.ts b/src/server/features/formatting.ts
index 1c7c71f..d99a51d 100644
--- a/src/server/features/formatting.ts
+++ b/src/server/features/formatting.ts
@@ -4,7 +4,8 @@
  *--------------------------------------------------------------------------------------------*/
 import { workspace } from 'coc.nvim'
 import { DocumentFormattingEditProvider, DocumentRangeFormattingEditProvider } from 'coc.nvim/lib/provider'
-import { CancellationToken, FormattingOptions, Position, Range, TextDocument, TextEdit } from 'vscode-languageserver-protocol'
+import { CancellationToken, FormattingOptions, Position, Range, TextEdit } from 'vscode-languageserver-protocol'
+import { TextDocument } from 'vscode-languageserver-textdocument'
 import * as Proto from '../protocol'
 import { ITypeScriptServiceClient } from '../typescriptService'
 import * as typeConverters from '../utils/typeConverters'
diff --git a/src/server/features/hover.ts b/src/server/features/hover.ts
index 4931b02..6bdd4f6 100644
--- a/src/server/features/hover.ts
+++ b/src/server/features/hover.ts
@@ -2,7 +2,8 @@
  *  Copyright (c) Microsoft Corporation. All rights reserved.
  *  Licensed under the MIT License. See License.txt in the project root for license information.
  *--------------------------------------------------------------------------------------------*/
-import { CancellationToken, Hover, MarkedString, Position, TextDocument } from 'vscode-languageserver-protocol'
+import { CancellationToken, Hover, MarkedString, Position } from 'vscode-languageserver-protocol'
+import { TextDocument } from 'vscode-languageserver-textdocument'
 import { HoverProvider } from 'coc.nvim/lib/provider'
 import * as Proto from '../protocol'
 import { ITypeScriptServiceClient } from '../typescriptService'
diff --git a/src/server/features/implementationsCodeLens.ts b/src/server/features/implementationsCodeLens.ts
index 038bfd6..d39a701 100644
--- a/src/server/features/implementationsCodeLens.ts
+++ b/src/server/features/implementationsCodeLens.ts
@@ -2,7 +2,8 @@
  *  Copyright (c) Microsoft Corporation. All rights reserved.
  *  Licensed under the MIT License. See License.txt in the project root for license information.
  *--------------------------------------------------------------------------------------------*/
-import { CancellationToken, CodeLens, Command, Location, Range, TextDocument } from 'vscode-languageserver-protocol'
+import { CancellationToken, CodeLens, Command, Location, Range } from 'vscode-languageserver-protocol'
+import { TextDocument } from 'vscode-languageserver-textdocument'
 import * as Proto from '../protocol'
 import * as PConst from '../protocol.const'
 import * as typeConverters from '../utils/typeConverters'
diff --git a/src/server/features/importFix.ts b/src/server/features/importFix.ts
index c78b5e3..d3e7cb0 100644
--- a/src/server/features/importFix.ts
+++ b/src/server/features/importFix.ts
@@ -1,6 +1,7 @@
 import { CodeActionProvider, workspace } from 'coc.nvim'
 import BufferSyncSupport from './bufferSyncSupport'
-import { TextDocument, Range, CodeActionContext, CancellationToken, CodeAction } from 'vscode-languageserver-protocol'
+import { Range, CodeActionContext, CancellationToken, CodeAction } from 'vscode-languageserver-protocol'
+import { TextDocument } from 'vscode-languageserver-textdocument'
 import { nodeModules } from '../utils/helper'
 import { WorkspaceEdit, Command, TextEdit } from 'vscode-languageserver-types'
 
diff --git a/src/server/features/moduleInstall.ts b/src/server/features/moduleInstall.ts
index 4d60c9b..ec3a8dc 100644
--- a/src/server/features/moduleInstall.ts
+++ b/src/server/features/moduleInstall.ts
@@ -1,7 +1,8 @@
 import { Uri, commands } from 'coc.nvim'
 import { Command } from 'coc.nvim/lib/commands'
 import { CodeActionProvider } from 'coc.nvim/lib/provider'
-import { CancellationToken, CodeAction, CodeActionContext, Range, TextDocument } from 'vscode-languageserver-protocol'
+import { CancellationToken, CodeAction, CodeActionContext, Range } from 'vscode-languageserver-protocol'
+import { TextDocument } from 'vscode-languageserver-textdocument'
 import { ITypeScriptServiceClient } from '../typescriptService'
 import { installModules } from '../utils/modules'
 
diff --git a/src/server/features/quickfix.ts b/src/server/features/quickfix.ts
index 842c0b5..b0f8059 100644
--- a/src/server/features/quickfix.ts
+++ b/src/server/features/quickfix.ts
@@ -5,14 +5,13 @@
 import { commands, workspace } from 'coc.nvim'
 import { Command } from 'coc.nvim/lib/commands'
 import { CodeActionProvider } from 'coc.nvim/lib/provider'
-import { CancellationToken, CodeAction, CodeActionContext, CodeActionKind, Diagnostic, Range, TextDocument } from 'vscode-languageserver-protocol'
+import { CancellationToken, CodeAction, CodeActionContext, CodeActionKind, Diagnostic, Range } from 'vscode-languageserver-protocol'
+import { TextDocument } from 'vscode-languageserver-textdocument'
 import * as Proto from '../protocol'
 import { ITypeScriptServiceClient } from '../typescriptService'
 import API from '../utils/api'
 import { applyCodeActionCommands, getEditForCodeAction } from '../utils/codeAction'
 import * as typeConverters from '../utils/typeConverters'
-import BufferSyncSupport from './bufferSyncSupport'
-import { DiagnosticsManager } from './diagnostics'
 
 class ApplyCodeActionCommand implements Command {
   public static readonly ID = '_typescript.applyCodeActionCommand'
diff --git a/src/server/features/refactor.ts b/src/server/features/refactor.ts
index 85ea45b..cdebfa4 100644
--- a/src/server/features/refactor.ts
+++ b/src/server/features/refactor.ts
@@ -2,7 +2,8 @@
  *  Copyright (c) Microsoft Corporation. All rights reserved.
  *  Licensed under the MIT License. See License.txt in the project root for license information.
  *--------------------------------------------------------------------------------------------*/
-import { CancellationToken, CodeAction, CodeActionContext, CodeActionKind, Range, TextDocument, WorkspaceEdit } from 'vscode-languageserver-protocol'
+import { CancellationToken, CodeAction, CodeActionContext, CodeActionKind, Range, WorkspaceEdit } from 'vscode-languageserver-protocol'
+import { TextDocument } from 'vscode-languageserver-textdocument'
 import { Command } from 'coc.nvim/lib/commands'
 import { CodeActionProvider, CodeActionProviderMetadata } from 'coc.nvim/lib/provider'
 import { workspace, commands } from 'coc.nvim'
diff --git a/src/server/features/references.ts b/src/server/features/references.ts
index 0d01076..e09667b 100644
--- a/src/server/features/references.ts
+++ b/src/server/features/references.ts
@@ -2,7 +2,8 @@
  *  Copyright (c) Microsoft Corporation. All rights reserved.
  *  Licensed under the MIT License. See License.txt in the project root for license information.
  *--------------------------------------------------------------------------------------------*/
-import { CancellationToken, Location, Position, TextDocument } from 'vscode-languageserver-protocol'
+import { CancellationToken, Location, Position } from 'vscode-languageserver-protocol'
+import { TextDocument } from 'vscode-languageserver-textdocument'
 import { ReferenceContext, ReferenceProvider } from 'coc.nvim/lib/provider'
 import { ITypeScriptServiceClient } from '../typescriptService'
 import * as typeConverters from '../utils/typeConverters'
diff --git a/src/server/features/referencesCodeLens.ts b/src/server/features/referencesCodeLens.ts
index f3472dd..8dae43d 100644
--- a/src/server/features/referencesCodeLens.ts
+++ b/src/server/features/referencesCodeLens.ts
@@ -2,7 +2,8 @@
  *  Copyright (c) Microsoft Corporation. All rights reserved.
  *  Licensed under the MIT License. See License.txt in the project root for license information.
  *--------------------------------------------------------------------------------------------*/
-import { CancellationToken, CodeLens, Range, TextDocument } from 'vscode-languageserver-protocol'
+import { CancellationToken, CodeLens, Range } from 'vscode-languageserver-protocol'
+import { TextDocument } from 'vscode-languageserver-textdocument'
 import * as Proto from '../protocol'
 import * as PConst from '../protocol.const'
 import * as typeConverters from '../utils/typeConverters'
diff --git a/src/server/features/rename.ts b/src/server/features/rename.ts
index 0c50e03..6f5d384 100644
--- a/src/server/features/rename.ts
+++ b/src/server/features/rename.ts
@@ -4,7 +4,8 @@
  *--------------------------------------------------------------------------------------------*/
 import { Uri, RenameProvider } from 'coc.nvim'
 import path from 'path'
-import { CancellationToken, Position, Range, TextDocument, TextEdit, WorkspaceEdit } from 'vscode-languageserver-protocol'
+import { CancellationToken, Position, Range, TextEdit, WorkspaceEdit } from 'vscode-languageserver-protocol'
+import { TextDocument } from 'vscode-languageserver-textdocument'
 import * as Proto from '../protocol'
 import { ITypeScriptServiceClient, ServerResponse } from '../typescriptService'
 import API from '../utils/api'
@@ -98,7 +99,7 @@ export default class TypeScriptRenameProvider implements RenameProvider {
         for (const textSpan of spanGroup.locs) {
           changes[uri].push({
             range: typeConverters.Range.fromTextSpan(textSpan),
-            newText:  (textSpan.prefixText || '') + newName + (textSpan.suffixText || '')
+            newText: (textSpan.prefixText || '') + newName + (textSpan.suffixText || '')
           })
         }
       }
diff --git a/src/server/features/signatureHelp.ts b/src/server/features/signatureHelp.ts
index fd963e6..df5e113 100644
--- a/src/server/features/signatureHelp.ts
+++ b/src/server/features/signatureHelp.ts
@@ -2,17 +2,18 @@
  *  Copyright (c) Microsoft Corporation. All rights reserved.
  *  Licensed under the MIT License. See License.txt in the project root for license information.
  *--------------------------------------------------------------------------------------------*/
-import {CancellationToken, Position, SignatureHelp, SignatureInformation, TextDocument} from 'vscode-languageserver-protocol'
-import {SignatureHelpProvider} from 'coc.nvim/lib/provider'
+import { CancellationToken, Position, SignatureHelp, SignatureInformation } from 'vscode-languageserver-protocol'
+import { TextDocument } from 'vscode-languageserver-textdocument'
+import { SignatureHelpProvider } from 'coc.nvim/lib/provider'
 import * as Proto from '../protocol'
-import {ITypeScriptServiceClient} from '../typescriptService'
+import { ITypeScriptServiceClient } from '../typescriptService'
 import * as Previewer from '../utils/previewer'
 import * as typeConverters from '../utils/typeConverters'
 
 export default class TypeScriptSignatureHelpProvider implements SignatureHelpProvider {
   public static readonly triggerCharacters = ['(', ',', '<']
 
-  public constructor(private readonly client: ITypeScriptServiceClient) {}
+  public constructor(private readonly client: ITypeScriptServiceClient) { }
 
   public async provideSignatureHelp(
     document: TextDocument,
diff --git a/src/server/features/smartSelect.ts b/src/server/features/smartSelect.ts
index ab45ab2..627286e 100644
--- a/src/server/features/smartSelect.ts
+++ b/src/server/features/smartSelect.ts
@@ -5,7 +5,8 @@
 
 import * as Proto from '../protocol'
 import { ITypeScriptServiceClient } from '../typescriptService'
-import { TextDocument, Range, Position, CancellationToken } from 'vscode-languageserver-protocol'
+import { Range, Position, CancellationToken } from 'vscode-languageserver-protocol'
+import { TextDocument } from 'vscode-languageserver-textdocument'
 import * as typeConverters from '../utils/typeConverters'
 import { SelectionRangeProvider } from 'coc.nvim'
 
diff --git a/src/server/features/tagCompletion.ts b/src/server/features/tagCompletion.ts
index 828f8de..3de9ea5 100644
--- a/src/server/features/tagCompletion.ts
+++ b/src/server/features/tagCompletion.ts
@@ -2,7 +2,8 @@
  *  Copyright (c) Microsoft Corporation. All rights reserved.
  *  Licensed under the MIT License. See License.txt in the project root for license information.
  *--------------------------------------------------------------------------------------------*/
-import { CancellationToken, CompletionContext, CompletionItem, Position, TextDocument } from 'vscode-languageserver-protocol'
+import { CancellationToken, CompletionContext, CompletionItem, Position } from 'vscode-languageserver-protocol'
+import { TextDocument } from 'vscode-languageserver-textdocument'
 import { CompletionItemProvider } from 'coc.nvim/lib/provider'
 import * as Proto from '../protocol'
 import { ITypeScriptServiceClient } from '../typescriptService'
diff --git a/src/server/features/updatePathOnRename.ts b/src/server/features/updatePathOnRename.ts
index a35d72e..3dae40b 100644
--- a/src/server/features/updatePathOnRename.ts
+++ b/src/server/features/updatePathOnRename.ts
@@ -2,7 +2,8 @@
  *  Copyright (c) Microsoft Corporation. All rights reserved.
  *  Licensed under the MIT License. See License.txt in the project root for license information.
  *--------------------------------------------------------------------------------------------*/
-import { Disposable, TextDocument, WorkspaceEdit, CancellationToken } from 'vscode-languageserver-protocol'
+import { Disposable, WorkspaceEdit, CancellationToken } from 'vscode-languageserver-protocol'
+import { TextDocument } from 'vscode-languageserver-textdocument'
 import { Uri, disposeAll, workspace } from 'coc.nvim'
 import * as Proto from '../protocol'
 import { ITypeScriptServiceClient } from '../typescriptService'
diff --git a/src/server/organizeImports.ts b/src/server/organizeImports.ts
index 1d6d953..ffeb2bf 100644
--- a/src/server/organizeImports.ts
+++ b/src/server/organizeImports.ts
@@ -3,7 +3,8 @@
  *  Licensed under the MIT License. See License.txt in the project root for license information.
  *--------------------------------------------------------------------------------------------*/
 import { workspace, CodeActionProvider, CodeActionProviderMetadata } from 'coc.nvim'
-import { CancellationToken, Range, TextDocument, CodeActionContext, WorkspaceEdit, CodeActionKind, CodeAction } from 'vscode-languageserver-protocol'
+import { CancellationToken, Range, CodeActionContext, WorkspaceEdit, CodeActionKind, CodeAction } from 'vscode-languageserver-protocol'
+import { TextDocument } from 'vscode-languageserver-textdocument'
 import { Command } from './commands'
 import Proto from './protocol'
 import { standardLanguageDescriptions } from './utils/languageDescription'
diff --git a/src/server/protocol.const.ts b/src/server/protocol.const.ts
index 7d047e4..1283563 100644
--- a/src/server/protocol.const.ts
+++ b/src/server/protocol.const.ts
@@ -34,7 +34,6 @@ export class Kind {
   public static readonly parameter = 'parameter'
 }
 
-
 export class DiagnosticCategory {
   public static readonly error = 'error'
   public static readonly warning = 'warning'
diff --git a/src/server/typescriptService.ts b/src/server/typescriptService.ts
index b973a10..fbb7792 100644
--- a/src/server/typescriptService.ts
+++ b/src/server/typescriptService.ts
@@ -41,6 +41,7 @@ export interface TypeScriptRequestTypes {
   'completions': [Proto.CompletionsRequestArgs, Proto.CompletionsResponse]
   'configure': [Proto.ConfigureRequestArguments, Proto.ConfigureResponse]
   'definition': [Proto.FileLocationRequestArgs, Proto.DefinitionResponse]
+  // tslint:disable-next-line: deprecation
   'definitionAndBoundSpan': [Proto.FileLocationRequestArgs, Proto.DefinitionInfoAndBoundSpanReponse]
   'docCommentTemplate': [Proto.FileLocationRequestArgs, Proto.DocCommandTemplateResponse]
   'documentHighlights': [Proto.DocumentHighlightsRequestArgs, Proto.DocumentHighlightsResponse]
diff --git a/src/server/utils/SnippetString.ts b/src/server/utils/SnippetString.ts
index 39cfe43..11fc378 100644
--- a/src/server/utils/SnippetString.ts
+++ b/src/server/utils/SnippetString.ts
@@ -1,39 +1,39 @@
 export default class SnippetString {
 
-  static isSnippetString(thing: any): thing is SnippetString {
+  public static isSnippetString(thing: any): thing is SnippetString {
     if (thing instanceof SnippetString) {
       return true
     }
     if (!thing) {
       return false
     }
-    return typeof (<SnippetString>thing).value === 'string'
+    return typeof thing.value === 'string'
   }
 
   private static _escape(value: string): string {
     return value.replace(/\$|}|\\/g, '\\$&')
   }
 
-  private _tabstop: number = 1
+  private _tabstop = 1
 
-  value: string
+  public value: string
 
   constructor(value?: string) {
     this.value = value || ''
   }
 
-  appendText(string: string): SnippetString {
-    this.value += SnippetString._escape(string)
+  public appendText(str: string): SnippetString {
+    this.value += SnippetString._escape(str)
     return this
   }
 
-  appendTabstop(number: number = this._tabstop++): SnippetString {
+  public appendTabstop(n: number = this._tabstop++): SnippetString {
     this.value += '$'
-    this.value += number
+    this.value += n
     return this
   }
 
-  appendPlaceholder(value: string | ((snippet: SnippetString) => any), number: number = this._tabstop++): SnippetString {
+  public appendPlaceholder(value: string | ((snippet: SnippetString) => any), n: number = this._tabstop++): SnippetString {
 
     if (typeof value === 'function') {
       const nested = new SnippetString()
@@ -46,7 +46,7 @@ export default class SnippetString {
     }
 
     this.value += '${'
-    this.value += number
+    this.value += n
     this.value += ':'
     this.value += value
     this.value += '}'
@@ -54,7 +54,7 @@ export default class SnippetString {
     return this
   }
 
-  appendVariable(name: string, defaultValue?: string | ((snippet: SnippetString) => any)): SnippetString {
+  public appendVariable(name: string, defaultValue?: string | ((snippet: SnippetString) => any)): SnippetString {
 
     if (typeof defaultValue === 'function') {
       const nested = new SnippetString()
diff --git a/src/server/utils/helper.ts b/src/server/utils/helper.ts
index 11a1e29..459dd53 100644
--- a/src/server/utils/helper.ts
+++ b/src/server/utils/helper.ts
@@ -27,5 +27,5 @@ export const nodeModules = [
   'v8',
   'vm',
   'zlib',
-  'perf_hooks']
-
+  'perf_hooks'
+]
diff --git a/src/utils/plugins.ts b/src/utils/plugins.ts
index b09696e..d39a99e 100644
--- a/src/utils/plugins.ts
+++ b/src/utils/plugins.ts
@@ -66,7 +66,7 @@ export class PluginManager implements Disposable {
   private readonly _onDidUpdateConfig = this._register(new Emitter<{ pluginId: string, config: {} }>())
   public readonly onDidUpdateConfig = this._onDidUpdateConfig.event
 
-  public setConfiguration(pluginId: string, config: {}) {
+  public setConfiguration(pluginId: string, config: {}): void {
     this._pluginConfigurations.set(pluginId, config)
     this._onDidUpdateConfig.fire({ pluginId, config })
   }
@@ -75,7 +75,7 @@ export class PluginManager implements Disposable {
     return this._pluginConfigurations.entries()
   }
 
-  private readPlugins() {
+  private readPlugins(): Map<string, ReadonlyArray<TypeScriptServerPlugin>> {
     const pluginMap = new Map<string, ReadonlyArray<TypeScriptServerPlugin>>()
     for (const extension of extensions.all) {
       const pack = extension.packageJSON
diff --git a/tslint.json b/tslint.json
index c0d2b27..da13039 100644
--- a/tslint.json
+++ b/tslint.json
@@ -1,7 +1,8 @@
 {
   "extends": "./node_modules/@chemzqm/tslint-config/tslint.json",
   "rules": {
-    "no-floating-promises": false
+    "no-floating-promises": false,
+    "no-invalid-template-strings": false
   },
   "linterOptions": {
     "exclude": []
diff --git a/yarn.lock b/yarn.lock
index 0e62197..7fbdc79 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -3256,6 +3256,11 @@ vscode-languageserver-protocol@^3.15.3:
     vscode-jsonrpc "^5.0.1"
     vscode-languageserver-types "3.15.1"
 
+vscode-languageserver-textdocument@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.1.tgz#178168e87efad6171b372add1dea34f53e5d330f"
+  integrity sha512-UIcJDjX7IFkck7cSkNNyzIz5FyvpQfY7sdzVy+wkKN/BLaD4DQ0ppXQrKePomCxTS7RrolK1I0pey0bG9eh8dA==
+
 vscode-languageserver-types@3.15.1, vscode-languageserver-types@^3.15.1:
   version "3.15.1"
   resolved "https://registry.yarnpkg.com/vscode-languageserver-types/-/vscode-languageserver-types-3.15.1.tgz#17be71d78d2f6236d414f0001ce1ef4d23e6b6de"