diff --git a/src/Data/Derivation/Expression/Internal.hs b/src/Data/Derivation/Expression/Internal.hs
--- a/src/Data/Derivation/Expression/Internal.hs
+++ b/src/Data/Derivation/Expression/Internal.hs
@@ -10,7 +10,7 @@
 
 import Prelude hiding ((<>), log)
 
-import Outputable (Outputable(..), SDoc, (<>), (<+>), text)
+import GHC.Utils.Outputable (Outputable(..), SDoc, (<>), (<+>), text)
 import Control.Arrow (first, second)
 import Control.Monad.Try (Try, throw, tell, partial)
 import Data.Map.Strict (Map, (!?), empty, singleton, insert)
diff --git a/src/Data/Log.hs b/src/Data/Log.hs
--- a/src/Data/Log.hs
+++ b/src/Data/Log.hs
@@ -14,10 +14,10 @@
 
 import Prelude hiding (unwords, log)
 
-import Outputable (Outputable, SDoc, empty, ppr, text, ($$))
+import GHC.Utils.Outputable (Outputable, SDoc, empty, ppr, text, ($$))
 import Data.String (IsString(..))
 
-import qualified Outputable as O ((<>))
+import qualified GHC.Utils.Outputable as O ((<>))
 
 ---------------------------------------------------------------------------
 
diff --git a/src/Plugin/TypeCheck/Nat/Simple.hs b/src/Plugin/TypeCheck/Nat/Simple.hs
--- a/src/Plugin/TypeCheck/Nat/Simple.hs
+++ b/src/Plugin/TypeCheck/Nat/Simple.hs
@@ -8,7 +8,7 @@
 
 import Prelude hiding (log)
 
-import GhcPlugins (Plugin, Var, ppr)
+import GHC.Plugins (Plugin, Var, ppr)
 import Control.Monad.Try (tell)
 import Data.Log (Log, (.+.), fromSDoc, SDocStr)
 import Data.Derivation.CanDerive (canDerive, givens, wanted)
diff --git a/src/Plugin/TypeCheck/Nat/Simple/Decode.hs b/src/Plugin/TypeCheck/Nat/Simple/Decode.hs
--- a/src/Plugin/TypeCheck/Nat/Simple/Decode.hs
+++ b/src/Plugin/TypeCheck/Nat/Simple/Decode.hs
@@ -6,12 +6,13 @@
 	-- * DECODE CT
 	decodeAll, decode ) where
 
-import Constraint (Ct)
-import TcTypeNats (typeNatAddTyCon, typeNatSubTyCon, typeNatLeqTyCon)
-import TysWiredIn (promotedFalseDataCon, promotedTrueDataCon)
-import TyCoRep (Type(..), TyLit(..))
-import Var (Var)
-import Outputable (ppr, text, (<+>))
+import GHC.Tc.Types.Constraint (Ct)
+import GHC.Builtin.Types.Literals (
+	typeNatAddTyCon, typeNatSubTyCon, typeNatLeqTyCon )
+import GHC.Builtin.Types (promotedFalseDataCon, promotedTrueDataCon)
+import GHC.Core.TyCo.Rep (Type(..), TyLit(..))
+import GHC.Types.Var (Var)
+import GHC.Utils.Outputable (ppr, text, (<+>))
 import Control.Applicative ((<|>))
 import Control.Monad ((<=<))
 import Control.Monad.Try (Try, throw, rights, Set)
diff --git a/src/Plugin/TypeCheck/Nat/Simple/TypeCheckWith.hs b/src/Plugin/TypeCheck/Nat/Simple/TypeCheckWith.hs
--- a/src/Plugin/TypeCheck/Nat/Simple/TypeCheckWith.hs
+++ b/src/Plugin/TypeCheck/Nat/Simple/TypeCheckWith.hs
@@ -5,14 +5,14 @@
 	-- * TYPE CHECK WITH
 	typeCheckWith ) where
 
-import GhcPlugins (
+import GHC.Plugins (
 	Plugin(..), defaultPlugin, Expr(..), mkUnivCo, Role(..),
 	Outputable, ppr, text )
-import TcPluginM (TcPluginM, tcPluginTrace)
-import TcRnTypes (TcPlugin(..), TcPluginResult(..))
-import Constraint (Ct)
-import TcEvidence (EvTerm(..))
-import TyCoRep (UnivCoProvenance(..))
+import GHC.Tc.Plugin (TcPluginM, tcPluginTrace)
+import GHC.Tc.Types (TcPlugin(..), TcPluginResult(..))
+import GHC.Tc.Types.Constraint (Ct)
+import GHC.Tc.Types.Evidence (EvTerm(..))
+import GHC.Core.TyCo.Rep (UnivCoProvenance(..))
 import Control.Monad.Try (Try, gatherSuccess, throw, Set)
 import Data.Bool (bool)
 import Data.Log (IsSDoc, fromSDoc)
diff --git a/src/Plugin/TypeCheck/Nat/Simple/UnNomEq.hs b/src/Plugin/TypeCheck/Nat/Simple/UnNomEq.hs
--- a/src/Plugin/TypeCheck/Nat/Simple/UnNomEq.hs
+++ b/src/Plugin/TypeCheck/Nat/Simple/UnNomEq.hs
@@ -3,10 +3,10 @@
 
 module Plugin.TypeCheck.Nat.Simple.UnNomEq (unNomEq) where
 
-import Constraint (Ct, ctEvidence, ctEvPred)
-import Type (Type)
-import Predicate(Pred(..), EqRel(..), classifyPredType)
-import Outputable (ppr, text, (<+>))
+import GHC.Tc.Types.Constraint (Ct, ctEvidence, ctEvPred)
+import GHC.Core.Type (Type)
+import GHC.Core.Predicate(Pred(..), EqRel(..), classifyPredType)
+import GHC.Utils.Outputable (ppr, text, (<+>))
 import Control.Monad.Try (Try, throw)
 import Data.Log (IsSDoc, fromSDoc)
 
diff --git a/typecheck-plugin-nat-simple.cabal b/typecheck-plugin-nat-simple.cabal
--- a/typecheck-plugin-nat-simple.cabal
+++ b/typecheck-plugin-nat-simple.cabal
@@ -1,13 +1,13 @@
 cabal-version: 1.12
 
--- This file has been generated from package.yaml by hpack version 0.33.0.
+-- This file has been generated from package.yaml by hpack version 0.34.4.
 --
 -- see: https://github.com/sol/hpack
 --
--- hash: b4a2c9232ca43b64c02fc5bd936fda1c23ff88e928a128aeda1ed33a6ff0c5c1
+-- hash: 5a2137892d8321f793a6b1b9818beacaeee56ca5abbd9e3fbd30d394a7105d21
 
 name:           typecheck-plugin-nat-simple
-version:        0.1.0.2
+version:        0.1.0.3
 synopsis:       Simple type check plugin which calculate addition, subtraction and less-or-equal-than
 description:    Please see the README on GitHub at <https://github.com/YoshikuniJujo/typecheck-plugin-nat-simple#readme>
 category:       Compiler Plugin
@@ -57,7 +57,7 @@
   build-depends:
       base >=4.7 && <5
     , containers
-    , ghc
+    , ghc >=9.0.2
   default-language: Haskell2010
 
 test-suite typecheck-plugin-nat-simple-test-log
@@ -71,7 +71,7 @@
   build-depends:
       base >=4.7 && <5
     , containers
-    , ghc
+    , ghc >=9.0.2
     , typecheck-plugin-nat-simple
   default-language: Haskell2010
 
@@ -86,7 +86,7 @@
   build-depends:
       base >=4.7 && <5
     , containers
-    , ghc
+    , ghc >=9.0.2
     , typecheck-plugin-nat-simple
   default-language: Haskell2010
 
@@ -101,6 +101,6 @@
   build-depends:
       base >=4.7 && <5
     , containers
-    , ghc
+    , ghc >=9.0.2
     , typecheck-plugin-nat-simple
   default-language: Haskell2010
