diff --git a/hls-change-type-signature-plugin.cabal b/hls-change-type-signature-plugin.cabal
--- a/hls-change-type-signature-plugin.cabal
+++ b/hls-change-type-signature-plugin.cabal
@@ -1,6 +1,6 @@
 cabal-version:      2.4
 name:               hls-change-type-signature-plugin
-version:            2.0.0.1
+version:            2.1.0.0
 synopsis:           Change a declarations type signature with a Code Action
 description:
   Please see the README on GitHub at <https://github.com/haskell/plugins/hls-change-type-signature-plugin/README.md>
@@ -28,15 +28,15 @@
   hs-source-dirs:   src
   build-depends:
     , base             >=4.12 && < 5
-    , ghcide           == 2.0.0.1
-    , hls-plugin-api   == 2.0.0.1
+    , ghcide           == 2.1.0.0
+    , hls-plugin-api   == 2.1.0.0
     , lsp-types
     , regex-tdfa
     , syb
     , text
     , transformers
     , unordered-containers
-
+    , containers
   ghc-options: -Wall
   default-language: Haskell2010
   default-extensions:
@@ -61,7 +61,7 @@
     , base                 >=4.12 && < 5
     , filepath
     , hls-change-type-signature-plugin
-    , hls-test-utils       == 2.0.0.1
+    , hls-test-utils       == 2.1.0.0
     , lsp
     , QuickCheck
     , regex-tdfa
diff --git a/src/Ide/Plugin/ChangeTypeSignature.hs b/src/Ide/Plugin/ChangeTypeSignature.hs
--- a/src/Ide/Plugin/ChangeTypeSignature.hs
+++ b/src/Ide/Plugin/ChangeTypeSignature.hs
@@ -6,47 +6,47 @@
                                       , errorMessageRegexes
                                       ) where
 
-import           Control.Monad                  (guard)
-import           Control.Monad.IO.Class         (MonadIO (liftIO))
-import           Control.Monad.Trans.Except     (ExceptT)
-import           Data.Foldable                  (asum)
-import qualified Data.HashMap.Strict            as Map
-import           Data.Maybe                     (mapMaybe)
-import           Data.Text                      (Text)
-import qualified Data.Text                      as T
-import           Development.IDE                (realSrcSpanToRange)
-import           Development.IDE.Core.RuleTypes (GetParsedModule (GetParsedModule))
-import           Development.IDE.Core.Service   (IdeState, runAction)
-import           Development.IDE.Core.Shake     (use)
+import           Control.Monad                    (guard)
+import           Control.Monad.IO.Class           (MonadIO)
+import           Control.Monad.Trans.Except       (ExceptT)
+import           Data.Foldable                    (asum)
+import qualified Data.Map                         as Map
+import           Data.Maybe                       (mapMaybe)
+import           Data.Text                        (Text)
+import qualified Data.Text                        as T
+import           Development.IDE                  (realSrcSpanToRange)
+import           Development.IDE.Core.PluginUtils
+import           Development.IDE.Core.RuleTypes   (GetParsedModule (GetParsedModule))
+import           Development.IDE.Core.Service     (IdeState)
 import           Development.IDE.GHC.Compat
-import           Development.IDE.GHC.Util       (printOutputable)
-import           Generics.SYB                   (extQ, something)
-import           Ide.PluginUtils                (getNormalizedFilePath,
-                                                 handleMaybeM, pluginResponse)
-import           Ide.Types                      (PluginDescriptor (..),
-                                                 PluginId (PluginId),
-                                                 PluginMethodHandler,
-                                                 defaultPluginDescriptor,
-                                                 mkPluginHandler)
-import           Language.LSP.Types
-import           Text.Regex.TDFA                ((=~))
+import           Development.IDE.GHC.Util         (printOutputable)
+import           Generics.SYB                     (extQ, something)
+import           Ide.Plugin.Error                 (PluginError,
+                                                   getNormalizedFilePathE)
+import           Ide.Types                        (PluginDescriptor (..),
+                                                   PluginId (PluginId),
+                                                   PluginMethodHandler,
+                                                   defaultPluginDescriptor,
+                                                   mkPluginHandler)
+import           Language.LSP.Protocol.Message
+import           Language.LSP.Protocol.Types
+import           Text.Regex.TDFA                  ((=~))
 
 descriptor :: PluginId -> PluginDescriptor IdeState
-descriptor plId = (defaultPluginDescriptor plId) { pluginHandlers = mkPluginHandler STextDocumentCodeAction (codeActionHandler plId) }
+descriptor plId = (defaultPluginDescriptor plId) { pluginHandlers = mkPluginHandler SMethod_TextDocumentCodeAction (codeActionHandler plId) }
 
-codeActionHandler :: PluginId -> PluginMethodHandler IdeState 'TextDocumentCodeAction
-codeActionHandler plId ideState _ CodeActionParams {_textDocument = TextDocumentIdentifier uri, _context = CodeActionContext (List diags) _} = pluginResponse $ do
-      nfp <- getNormalizedFilePath uri
+codeActionHandler :: PluginId -> PluginMethodHandler IdeState 'Method_TextDocumentCodeAction
+codeActionHandler plId ideState _ CodeActionParams {_textDocument = TextDocumentIdentifier uri, _context = CodeActionContext diags _ _} = do
+      nfp <- getNormalizedFilePathE uri
       decls <- getDecls plId ideState nfp
       let actions = mapMaybe (generateAction plId uri decls) diags
-      pure $ List actions
+      pure $ InL actions
 
-getDecls :: MonadIO m => PluginId -> IdeState -> NormalizedFilePath -> ExceptT String m [LHsDecl GhcPs]
-getDecls (PluginId changeTypeSignatureId) state = handleMaybeM "Could not get Parsed Module"
-    . liftIO
-    . fmap (fmap (hsmodDecls . unLoc . pm_parsed_source))
-    . runAction (T.unpack changeTypeSignatureId <> ".GetParsedModule") state
-    . use GetParsedModule
+getDecls :: MonadIO m => PluginId -> IdeState -> NormalizedFilePath -> ExceptT PluginError m [LHsDecl GhcPs]
+getDecls (PluginId changeTypeSignatureId) state =
+    runActionE (T.unpack changeTypeSignatureId <> ".GetParsedModule") state
+    . (fmap (hsmodDecls . unLoc . pm_parsed_source))
+    . useE GetParsedModule
 
 -- | Text representing a Declaration's Name
 type DeclName = Text
@@ -146,15 +146,16 @@
                                                 else T.strip $ snd $ T.breakOnEnd " :: " sig
 
 changeSigToCodeAction :: PluginId -> Uri -> ChangeSignature -> Command |? CodeAction
-changeSigToCodeAction (PluginId changeTypeSignatureId) uri ChangeSignature{..} = InR CodeAction { _title       = mkChangeSigTitle declName actualType
-                                                               , _kind        = Just (CodeActionUnknown ("quickfix." <> changeTypeSignatureId))
-                                                               , _diagnostics = Just $ List [diagnostic]
-                                                               , _isPreferred = Nothing
-                                                               , _disabled    = Nothing
-                                                               , _edit        = Just $ mkChangeSigEdit uri declSrcSpan (mkNewSignature declName actualType)
-                                                               , _command     = Nothing
-                                                               , _xdata       = Nothing
-                                                               }
+changeSigToCodeAction (PluginId changeTypeSignatureId) uri ChangeSignature{..} =
+    InR CodeAction { _title       = mkChangeSigTitle declName actualType
+                   , _kind        = Just (CodeActionKind_Custom ("quickfix." <> changeTypeSignatureId))
+                   , _diagnostics = Just [diagnostic]
+                   , _isPreferred = Nothing
+                   , _disabled    = Nothing
+                   , _edit        = Just $ mkChangeSigEdit uri declSrcSpan (mkNewSignature declName actualType)
+                   , _command     = Nothing
+                   , _data_       = Nothing
+                   }
 
 mkChangeSigTitle :: Text -> Text -> Text
 mkChangeSigTitle declName actualType = "Change signature for ‘" <> declName <> "’ to: " <> actualType
@@ -162,7 +163,7 @@
 mkChangeSigEdit :: Uri -> RealSrcSpan -> Text -> WorkspaceEdit
 mkChangeSigEdit uri ss replacement =
         let txtEdit = TextEdit (realSrcSpanToRange ss) replacement
-            changes = Just $ Map.singleton uri (List [txtEdit])
+            changes = Just $ Map.singleton uri [txtEdit]
         in WorkspaceEdit changes Nothing Nothing
 
 mkNewSignature :: Text -> Text -> Text
