diff --git a/hpgsql-simple-compat.cabal b/hpgsql-simple-compat.cabal
--- a/hpgsql-simple-compat.cabal
+++ b/hpgsql-simple-compat.cabal
@@ -1,6 +1,6 @@
 cabal-version: 2.0
 name:               hpgsql-simple-compat
-version:            0.2.0.0
+version:            0.3.0
 synopsis:           Fork of postgresql-simple implemented with hpgsql instead of postgresql-libpq.
 description:
   This is a fork of postgresql-simple that tries to preserve its API as much as possible, but
@@ -24,6 +24,11 @@
 homepage:           https://github.com/mzabani/hpgsql#readme
 bug-reports:        https://github.com/mzabani/hpgsql/issues
 build-type:         Simple
+tested-with:
+  GHC ==9.6.7
+   || ==9.8.4
+   || ==9.10.3
+   || ==9.12.2
 
 source-repository head
   type:     git
@@ -84,21 +89,18 @@
 
   -- GHC bundled libs
   build-depends:
-      base >= 4.18 && < 4.21
+      base >= 4.18 && < 4.22
     , bytestring >= 0.11 && < 0.13
     , case-insensitive >= 1.2 && < 1.3
     , containers >= 0.6 && < 0.8
-    , template-haskell >= 2.20 && < 2.23
+    , template-haskell >= 2.20 && < 2.24
     , text >= 2.0 && < 2.2
     , aeson >= 2.2 && < 2.3
     , attoparsec >= 0.14 && < 0.15
-    , haskell-src-meta >= 0.8 && < 0.9
-    , hpgsql >= 0.2 && < 0.3
+    , hpgsql >= 0.3 && < 0.4
     , hashable >= 1.5 && < 1.6
     , mtl >= 2.3 && < 2.4
-    , streaming >= 0.2 && < 0.3
     , time-compat >= 1.9 && < 1.10
-    , transformers >= 0.6 && < 0.7
     , Only >= 0.1 && < 0.2
     , scientific >= 0.3 && < 0.4
     , uuid-types >= 1.0 && < 1.1
diff --git a/src/Database/PostgreSQL/Simple/Copy.hs b/src/Database/PostgreSQL/Simple/Copy.hs
--- a/src/Database/PostgreSQL/Simple/Copy.hs
+++ b/src/Database/PostgreSQL/Simple/Copy.hs
@@ -42,7 +42,6 @@
 import Data.Int (Int64)
 import qualified Data.Text as Text
 import Data.Text.Encoding (decodeUtf8)
-import Data.Typeable (Typeable)
 import Database.PostgreSQL.Simple.HpgsqlUtils (toHpgsqlQuery)
 import Database.PostgreSQL.Simple.Internal
 import Database.PostgreSQL.Simple.ToRow (ToRow)
@@ -80,7 +79,7 @@
   | -- | No more rows, and a count of the
     --   number of rows returned.
     CopyOutDone {-# UNPACK #-} !Int64
-  deriving (Eq, Typeable, Show)
+  deriving (Eq, Show)
 
 -- | Feed some data to a @COPY FROM STDIN@ query.  Note that
 --   the data does not need to represent a single row,  or even an
diff --git a/src/Database/PostgreSQL/Simple/Errors.hs b/src/Database/PostgreSQL/Simple/Errors.hs
--- a/src/Database/PostgreSQL/Simple/Errors.hs
+++ b/src/Database/PostgreSQL/Simple/Errors.hs
@@ -25,11 +25,8 @@
 where
 
 import Control.Exception as E
-
 import Data.Attoparsec.ByteString.Char8
 import Data.ByteString (ByteString)
-import Data.Typeable
-
 import Database.PostgreSQL.Simple.Internal
 
 -- Examples of parsed error messages
@@ -55,7 +52,7 @@
     CheckViolation ByteString ByteString
   | -- | Name of the exclusion violation constraint
     ExclusionViolation ByteString
-  deriving (Show, Eq, Ord, Typeable)
+  deriving (Show, Eq, Ord)
 
 -- Default instance should be enough
 instance Exception ConstraintViolation where
diff --git a/src/Database/PostgreSQL/Simple/FromField.hs b/src/Database/PostgreSQL/Simple/FromField.hs
--- a/src/Database/PostgreSQL/Simple/FromField.hs
+++ b/src/Database/PostgreSQL/Simple/FromField.hs
@@ -157,7 +157,7 @@
         errHaskellType :: String,
         errMessage :: String
       }
-  deriving (Eq, Show, Typeable)
+  deriving (Eq, Show)
 
 instance Exception ResultError where
   toException = postgresqlExceptionToException
@@ -176,8 +176,8 @@
   fromField =
     let dec = Hpgsql.fieldDecoder
      in \f ->
-          if (Hpgsql.allowedPgTypes dec) f
-            then \mbs -> Conversion $ \_encCtx -> case (Hpgsql.fieldValueDecoder dec) f mbs of
+          if Hpgsql.allowedPgTypes dec f
+            then \mbs -> Conversion $ \_encCtx -> case Hpgsql.fieldValueDecoder dec f mbs of
               Right v -> Ok v
               Left err -> Errors [toException $ userError err]
             else \_ -> Conversion $ \_encCtx -> Errors [toException $ userError "Invalid type OID for FromField instance"]
diff --git a/src/Database/PostgreSQL/Simple/HStore/Implementation.hs b/src/Database/PostgreSQL/Simple/HStore/Implementation.hs
--- a/src/Database/PostgreSQL/Simple/HStore/Implementation.hs
+++ b/src/Database/PostgreSQL/Simple/HStore/Implementation.hs
@@ -27,7 +27,6 @@
 import qualified Data.Text.Encoding as TS
 import Data.Text.Encoding.Error (UnicodeException)
 import qualified Data.Text.Lazy as TL
-import Data.Typeable
 
 class ToHStore a where
   toHStore :: a -> HStoreBuilder
@@ -36,7 +35,6 @@
 data HStoreBuilder
   = Empty
   | Comma !Builder
-  deriving (Typeable)
 
 instance ToHStore HStoreBuilder where
   toHStore = id
@@ -68,7 +66,6 @@
 
 -- | Represents escape text, ready to be the key or value to a hstore value
 newtype HStoreText = HStoreText Builder
-  deriving stock (Typeable)
   deriving newtype (Semigroup, Monoid)
 
 instance ToHStoreText HStoreText where
@@ -112,13 +109,13 @@
         `mappend` char8 '"'
     )
 
-newtype HStoreList = HStoreList {fromHStoreList :: [(Text, Text)]} deriving (Typeable, Show)
+newtype HStoreList = HStoreList {fromHStoreList :: [(Text, Text)]} deriving (Show)
 
 -- | hstore
 instance ToHStore HStoreList where
   toHStore (HStoreList xs) = mconcat (map (uncurry hstore) xs)
 
-newtype HStoreMap = HStoreMap {fromHStoreMap :: Map Text Text} deriving (Eq, Ord, Typeable, Show)
+newtype HStoreMap = HStoreMap {fromHStoreMap :: Map Text Text} deriving (Eq, Ord, Show)
 
 instance ToHStore HStoreMap where
   toHStore (HStoreMap xs) = Map.foldrWithKey f mempty xs
diff --git a/src/Database/PostgreSQL/Simple/Internal.hs b/src/Database/PostgreSQL/Simple/Internal.hs
--- a/src/Database/PostgreSQL/Simple/Internal.hs
+++ b/src/Database/PostgreSQL/Simple/Internal.hs
@@ -49,14 +49,12 @@
     connectionTempNameCounter :: {-# UNPACK #-} !(IORef Int64),
     hpgConn :: HPgConnection
   }
-  deriving (Typeable)
 
 instance Eq Connection where
   x == y = hpgConn x == hpgConn y
 
 -- | Superclass for postgresql exceptions
 data SomePostgreSqlException = forall e. (Exception e) => SomePostgreSqlException e
-  deriving (Typeable)
 
 postgresqlExceptionToException :: (Exception e) => e -> SomeException
 postgresqlExceptionToException = toException . SomePostgreSqlException
@@ -83,7 +81,7 @@
     -- to help debugging the source of errors.
     sqlStatement :: ByteString
   }
-  deriving (Eq, Show, Typeable)
+  deriving (Eq, Show)
 
 fatalError :: ByteString -> SqlError
 fatalError msg = SqlError "" FatalError msg "" "" ""
@@ -98,7 +96,7 @@
   { qeMessage :: String,
     qeQuery :: Query
   }
-  deriving (Eq, Show, Typeable)
+  deriving (Eq, Show)
 
 instance Exception QueryError where
   toException = postgresqlExceptionToException
@@ -112,7 +110,7 @@
     fmtQuery :: Query,
     fmtParams :: [ByteString]
   }
-  deriving (Eq, Show, Typeable)
+  deriving (Eq, Show)
 
 instance Exception FormatError where
   toException = postgresqlExceptionToException
@@ -125,7 +123,7 @@
     connectPassword :: String,
     connectDatabase :: String
   }
-  deriving (Generic, Eq, Read, Show, Typeable)
+  deriving (Generic, Eq, Read, Show)
 
 -- | Default information for setting up a connection.
 --
@@ -240,7 +238,7 @@
 --   for detailed information regarding libpq and SSL.
 connectPostgreSQL :: ByteString -> IO Connection
 connectPostgreSQL connstr = do
-  connectionObjects <- newMVar (IntMap.empty)
+  connectionObjects <- newMVar IntMap.empty
   connectionTempNameCounter <- newIORef 0
   case Hpgsql.Connection.parseLibpqConnectionString (TE.decodeUtf8 connstr) of
     Left err -> error err
diff --git a/src/Database/PostgreSQL/Simple/Ok.hs b/src/Database/PostgreSQL/Simple/Ok.hs
--- a/src/Database/PostgreSQL/Simple/Ok.hs
+++ b/src/Database/PostgreSQL/Simple/Ok.hs
@@ -31,7 +31,6 @@
 import Control.Applicative
 import Control.Exception
 import Control.Monad (MonadPlus (..))
-import Data.Typeable
 
 import qualified Control.Monad.Fail as Fail
 
@@ -39,7 +38,7 @@
 --          a difference list (or a tree?)
 
 data Ok a = Errors [SomeException] | Ok !a
-  deriving (Show, Typeable, Functor)
+  deriving (Show, Functor)
 
 -- | Two 'Errors' cases are considered equal, regardless of what the
 --   list of exceptions looks like.
@@ -79,6 +78,6 @@
 
 -- | a way to reify a list of exceptions into a single exception
 newtype ManyErrors = ManyErrors [SomeException]
-  deriving (Show, Typeable)
+  deriving (Show)
 
 instance Exception ManyErrors
diff --git a/src/Database/PostgreSQL/Simple/Range.hs b/src/Database/PostgreSQL/Simple/Range.hs
--- a/src/Database/PostgreSQL/Simple/Range.hs
+++ b/src/Database/PostgreSQL/Simple/Range.hs
@@ -19,19 +19,17 @@
   )
 where
 
-import Data.Typeable (Typeable)
-
 -- | Represents boundary of a range
 data RangeBound a
   = NegInfinity
   | Inclusive !a
   | Exclusive !a
   | PosInfinity
-  deriving (Show, Typeable, Eq, Functor)
+  deriving (Show, Eq, Functor)
 
 -- | Generic range type
 data PGRange a = PGRange !(RangeBound a) !(RangeBound a)
-  deriving (Show, Typeable, Functor)
+  deriving (Show, Functor)
 
 empty :: PGRange a
 empty = PGRange PosInfinity NegInfinity
diff --git a/src/Database/PostgreSQL/Simple/ToField.hs b/src/Database/PostgreSQL/Simple/ToField.hs
--- a/src/Database/PostgreSQL/Simple/ToField.hs
+++ b/src/Database/PostgreSQL/Simple/ToField.hs
@@ -33,7 +33,6 @@
 import Data.Time.Calendar.Compat (Day)
 import Data.Time.Compat (CalendarDiffTime, NominalDiffTime, UTCTime, ZonedTime)
 import Data.Time.LocalTime.Compat (LocalTime, TimeOfDay)
-import Data.Typeable (Typeable)
 import Data.UUID.Types (UUID)
 import Data.Vector (Vector)
 import Hpgsql.Builder (BinaryField (..))
@@ -54,7 +53,6 @@
     Many [Action]
   | -- | Just a static SQL fragment to render
     Plain LB.ByteString
-  deriving (Typeable)
 
 instance Show Action where
   show (QueryArgument _) = "QueryArgument"
diff --git a/src/Database/PostgreSQL/Simple/Types.hs b/src/Database/PostgreSQL/Simple/Types.hs
--- a/src/Database/PostgreSQL/Simple/Types.hs
+++ b/src/Database/PostgreSQL/Simple/Types.hs
@@ -42,7 +42,6 @@
 import qualified Data.Text as T
 import Data.Text.Encoding (encodeUtf8)
 import Data.Tuple.Only (Only (..))
-import Data.Typeable (Typeable)
 import Database.PostgreSQL.LibPQ (Oid (..))
 import Database.PostgreSQL.Simple.Compat (toByteString)
 import Database.PostgreSQL.Simple.ToField (Action (..), ToField (..))
@@ -53,11 +52,11 @@
 
 -- | A placeholder for the SQL @NULL@ value.
 data Null = Null
-  deriving (Read, Show, Typeable)
+  deriving (Read, Show)
 
 -- | A placeholder for the PostgreSQL @DEFAULT@ value.
 data Default = Default
-  deriving (Read, Show, Typeable)
+  deriving (Read, Show)
 
 -- | A query string. This type is intended to make it difficult to
 -- construct a SQL query by concatenating string fragments, as that is
@@ -81,7 +80,7 @@
 newtype Query = Query
   { fromQuery :: ByteString
   }
-  deriving (Eq, Ord, Typeable)
+  deriving (Eq, Ord)
 
 instance Show Query where
   show = show . fromQuery
@@ -145,7 +144,7 @@
 --     be null or you want null treated sensibly as a component of @IN@ or
 --     @NOT IN@.
 newtype In a = In a
-  deriving (Eq, Ord, Read, Show, Typeable, Functor)
+  deriving (Eq, Ord, Read, Show, Functor)
 
 instance (ToField a) => ToField (In [a]) where
   toField (In []) = Plain "(NULL)"
@@ -153,7 +152,7 @@
 
 -- | Wrap binary data for use as a @bytea@ value.
 newtype Binary a = Binary {fromBinary :: a}
-  deriving (Eq, Ord, Read, Show, Typeable, Functor)
+  deriving (Eq, Ord, Read, Show, Functor)
 
 instance ToField (Binary ByteString)
 
@@ -165,7 +164,7 @@
 
 -- | Wrap text for use as sql identifier, i.e. a table or column name.
 newtype Identifier = Identifier {fromIdentifier :: Text}
-  deriving stock (Eq, Ord, Read, Show, Typeable)
+  deriving stock (Eq, Ord, Read, Show)
   deriving newtype (IsString)
 
 instance ToField Identifier where
@@ -177,7 +176,7 @@
 -- | Wrap text for use as (maybe) qualified identifier, i.e. a table
 -- with schema, or column with table.
 data QualifiedIdentifier = QualifiedIdentifier (Maybe Text) Text
-  deriving (Eq, Ord, Read, Show, Typeable)
+  deriving (Eq, Ord, Read, Show)
 
 instance ToField QualifiedIdentifier where
   toField (QualifiedIdentifier m n) = case m of
@@ -201,7 +200,7 @@
           else QualifiedIdentifier (Just x) (T.tail y)
 
 newtype Savepoint = Savepoint Query
-  deriving (Eq, Ord, Show, Read, Typeable)
+  deriving (Eq, Ord, Show, Read)
 
 -- | Represents a @VALUES@ table literal,  usable as an alternative to
 --   'Database.PostgreSQL.Simple.executeMany' and
@@ -257,7 +256,7 @@
 --   See <https://www.postgresql.org/docs/9.5/static/sql-values.html> for
 --   more information.
 data Values a = Values [QualifiedIdentifier] [a]
-  deriving (Eq, Ord, Show, Read, Typeable)
+  deriving (Eq, Ord, Show, Read)
 
 interleaveFoldr :: (a -> [b] -> [b]) -> b -> [b] -> [a] -> [b]
 interleaveFoldr f b bs' as = foldr (\a bs -> b : f a bs) bs' as
