diff --git a/source-constraints.cabal b/source-constraints.cabal
--- a/source-constraints.cabal
+++ b/source-constraints.cabal
@@ -4,10 +4,10 @@
 --
 -- see: https://github.com/sol/hpack
 --
--- hash: 91a3bc64301e8157e58aa102b9090a7175351884011c0df8480f6971486b3ba3
+-- hash: 7f4b65ce85cf869179da0d6dbb1879986a3279f7fb002c2254e841c7431f2818
 
 name:           source-constraints
-version:        0.0.1
+version:        0.0.2
 synopsis:       Source constraints GHC plugin
 description:    Please visit the README at <https://github.com/mbj/source-constraints#readme>
                 for usage information.
@@ -19,6 +19,7 @@
 copyright:      2018 Markus Schirp
 license:        BSD3
 license-file:   LICENSE
+tested-with:    GHC ==8.8.4 || ==8.10.2
 build-type:     Simple
 extra-source-files:
     test/LocalModuleExplicitImport.hs
@@ -47,14 +48,14 @@
       Paths_source_constraints
   hs-source-dirs:
       src
-  default-extensions: DerivingStrategies GeneralizedNewtypeDeriving LambdaCase NoImplicitPrelude OverloadedStrings RecordWildCards ScopedTypeVariables Strict
+  default-extensions: CPP DerivingStrategies GeneralizedNewtypeDeriving LambdaCase NoImplicitPrelude OverloadedStrings RecordWildCards ScopedTypeVariables Strict
   ghc-options: -Wall -Wcompat -Widentities -Wimplicit-prelude -Wincomplete-record-updates -Wincomplete-uni-patterns -Wmissing-exported-signatures -Wmissing-local-signatures -Wmonomorphism-restriction
   build-depends:
       attoparsec >=0.13 && <0.14
-    , base >=4.13 && <4.14
+    , base >=4.13 && <4.14 || >=4.14 && <4.15
     , bytestring >=0.10 && <0.11
     , filepath >=1.4 && <1.5
-    , ghc >=8.8 && <8.9
+    , ghc >=8.8 && <8.9 || >=8.10 && <8.11
     , syb >=0.7 && <0.8
     , text >=1.2 && <1.3
   if flag(development)
@@ -68,14 +69,14 @@
   main-is: Spec.hs
   hs-source-dirs:
       test
-  default-extensions: DerivingStrategies GeneralizedNewtypeDeriving LambdaCase NoImplicitPrelude OverloadedStrings RecordWildCards ScopedTypeVariables Strict
+  default-extensions: CPP DerivingStrategies GeneralizedNewtypeDeriving LambdaCase NoImplicitPrelude OverloadedStrings RecordWildCards ScopedTypeVariables Strict
   ghc-options: -Wall -Wcompat -Widentities -Wimplicit-prelude -Wincomplete-record-updates -Wincomplete-uni-patterns -Wmissing-exported-signatures -Wmissing-local-signatures -Wmonomorphism-restriction -rtsopts -threaded -with-rtsopts=-N
   build-depends:
       attoparsec >=0.13 && <0.14
-    , base >=4.13 && <4.14
+    , base >=4.13 && <4.14 || >=4.14 && <4.15
     , bytestring >=0.10 && <0.11
     , filepath >=1.4 && <1.5
-    , ghc >=8.8 && <8.9
+    , ghc >=8.8 && <8.9 || >=8.10 && <8.11
     , ghc-paths >=0.1 && <0.2
     , heredoc >=0.2 && <0.3
     , hspec >=2.7 && <2.8
diff --git a/src/SourceConstraints.hs b/src/SourceConstraints.hs
--- a/src/SourceConstraints.hs
+++ b/src/SourceConstraints.hs
@@ -16,7 +16,6 @@
 import Data.Function
 import Data.Generics.Aliases
 import Data.Generics.Text
-import Data.List
 import Data.Maybe
 import Data.Ord
 import Data.Semigroup
@@ -25,9 +24,13 @@
 import Data.Tuple
 import DynFlags
 import ErrUtils
+#if MIN_VERSION_GLASGOW_HASKELL(8,10,0,0)
+import GHC.Hs
+#else
 import HsDecls
 import HsExtension
 import HsSyn
+#endif
 import HscTypes
 import Module hiding (Module)
 import Outputable hiding ((<>), empty)
@@ -37,6 +40,8 @@
 import System.FilePath.Posix
 import SourceConstraints.LocalModule
 
+import qualified Data.List as List
+
 data Context = Context
   { dynFlags     :: DynFlags
   , localModules :: [LocalModule]
@@ -144,7 +149,7 @@
             (text "Present import list for local module")
 
         candidates :: [LImportDecl GhcPs]
-        candidates = filter isCandidate hsmodImports
+        candidates = List.filter isCandidate hsmodImports
 
         isCandidate :: LImportDecl GhcPs -> Bool
         isCandidate = \case
@@ -242,6 +247,6 @@
     candidates :: [((Located a, b), (Located a, b))]
     candidates =
       let items    = (\node -> (node, ordering $ unLoc node)) <$> nodes
-          expected = sortBy (compare `on` snd) items
+          expected = List.sortBy (compare `on` snd) items
       in
-        zip items expected
+        List.zip items expected
diff --git a/src/SourceConstraints/LocalModule.hs b/src/SourceConstraints/LocalModule.hs
--- a/src/SourceConstraints/LocalModule.hs
+++ b/src/SourceConstraints/LocalModule.hs
@@ -12,8 +12,8 @@
 import Data.Eq
 import Data.Function
 import Data.Semigroup
-import Data.List
 import Module
+import qualified Data.List as List
 
 newtype LocalModule = LocalModule ModuleName
 
@@ -25,7 +25,7 @@
   first  <- section
   others <- many (char '.' *> section)
 
-  pure . mkModuleName $ first <> intercalate "." others
+  pure . mkModuleName $ first <> List.intercalate "." others
   where
     section = (:) <$> satisfy isUpper <*> many (satisfy isLower)
 
@@ -35,5 +35,5 @@
     where
       prefixMatch =
         (moduleNameString localModuleName <> ".")
-        `isPrefixOf`
+        `List.isPrefixOf`
         moduleNameString moduleName
