diff --git a/changelog.md b/changelog.md
--- a/changelog.md
+++ b/changelog.md
@@ -1,2 +1,7 @@
+# 1.0.3
+
+* support GHC 9.0
+
 # 1.0.2
+
 * add persistent-test to deps
diff --git a/serversession.cabal b/serversession.cabal
--- a/serversession.cabal
+++ b/serversession.cabal
@@ -1,6 +1,6 @@
 cabal-version:   >= 1.10
 name:            serversession
-version:         1.0.2
+version:         1.0.3
 license:         MIT
 license-file:    LICENSE
 author:          Felipe Lessa <felipe.lessa@gmail.com>
diff --git a/src/Web/ServerSession/Core/Internal.hs b/src/Web/ServerSession/Core/Internal.hs
--- a/src/Web/ServerSession/Core/Internal.hs
+++ b/src/Web/ServerSession/Core/Internal.hs
@@ -50,6 +50,7 @@
 import Control.Monad.IO.Class (MonadIO(..))
 import Data.ByteString (ByteString)
 import Data.Hashable (Hashable(..))
+import Data.Kind (Type)
 import Data.Maybe (catMaybes, fromMaybe, isJust)
 import Data.Text (Text)
 import Data.Time (UTCTime, getCurrentTime)
@@ -171,7 +172,7 @@
       ) => IsSessionData sess where
   -- | The type of the session data after being decomposed.  This
   -- may be the same as @sess@.
-  type Decomposed sess :: *
+  type Decomposed sess :: Type
 
   -- | Empty session data.
   emptySession :: sess
@@ -273,11 +274,11 @@
       , IsSessionData (SessionData sto)
       ) => Storage sto where
   -- | The session data type used by this storage.
-  type SessionData sto :: *
+  type SessionData sto :: Type
 
   -- | Monad where transactions happen for this backend.
   -- We do not require transactions to be ACID.
-  type TransactionM sto :: * -> *
+  type TransactionM sto :: Type -> Type
 
   -- | Run a transaction on the IO monad.
   runTransactionM :: sto -> TransactionM sto a -> IO a
