diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,5 +1,9 @@
 <!-- -*- Markdown -*- -->
 
+## 0.12.2.4
+
+- fix typo.
+
 ## 0.12.2.3
 
 - update for GHC 8.8.x.
@@ -225,7 +229,7 @@
 
 ## 0.6.1.0
 
-- Add a configuration flag to pring verbose compile-time messages.
+- Add a configuration flag to print verbose compile-time messages.
 
 ## 0.6.0.0
 
diff --git a/relational-query.cabal b/relational-query.cabal
--- a/relational-query.cabal
+++ b/relational-query.cabal
@@ -1,7 +1,7 @@
 name:                relational-query
-version:             0.12.2.3
+version:             0.12.2.4
 synopsis:            Typeful, Modular, Relational, algebraic query engine
-description:         This package contiains typeful relation structure and
+description:         This package contains typeful relation structure and
                      relational-algebraic query building DSL which can
                      translate into SQL query.
                      .
@@ -16,11 +16,16 @@
 license-file:        LICENSE
 author:              Kei Hibino
 maintainer:          ex8k.hibino@gmail.com
-copyright:           Copyright (c) 2013-2019 Kei Hibino
+copyright:           Copyright (c) 2013-2023 Kei Hibino
 category:            Database
 build-type:          Simple
 cabal-version:       >=1.10
-tested-with:           GHC == 8.8.1, GHC == 8.8.2
+tested-with:           GHC == 9.6.2
+                     , GHC == 9.4.6
+                     , GHC == 9.2.8
+                     , GHC == 9.0.2
+                     , GHC == 8.10.7
+                     , GHC == 8.8.1, GHC == 8.8.2
                      , GHC == 8.6.1, GHC == 8.6.2, GHC == 8.6.3, GHC == 8.6.4, GHC == 8.6.5
                      , GHC == 8.4.1, GHC == 8.4.2, GHC == 8.4.3, GHC == 8.4.4
                      , GHC == 8.2.1, GHC == 8.2.2
@@ -112,6 +117,7 @@
                        , template-haskell
                        , th-reify-compat
                        , th-constraint-compat
+                       , th-data-compat
                        , product-isomorphic >= 0.0.3
                        , sql-words >=0.1.5
                        , names-th
diff --git a/src/Database/Relational/Arrow.hs b/src/Database/Relational/Arrow.hs
--- a/src/Database/Relational/Arrow.hs
+++ b/src/Database/Relational/Arrow.hs
@@ -11,7 +11,7 @@
 -- Portability : unknown
 --
 -- This module defines arrow version combinators which
--- improves type-safty on building queries.
+-- improves type-safety on building queries.
 -- Referencing the local projected records may cause to break
 -- the result query.
 -- It is possible to controls injection of previous local projected records
diff --git a/src/Database/Relational/Constraint.hs b/src/Database/Relational/Constraint.hs
--- a/src/Database/Relational/Constraint.hs
+++ b/src/Database/Relational/Constraint.hs
@@ -103,11 +103,11 @@
   constraintKey :: Key c r ct
 
 -- | Inferred 'Unique' constraint 'Key'.
---   Record type 'r' has unique key which type is 'ct' derived from primay key.
+--   Record type 'r' has unique key which type is 'ct' derived from primary key.
 derivedUniqueKey :: HasConstraintKey Primary r ct => Key Unique r ct
 derivedUniqueKey =  uniqueKey constraintKey
 
 -- -- | Inferred 'NotNull' constraint 'Key'.
--- --   Record type 'r' has not-null key which type is 'ct' derived from primay key.
+-- --   Record type 'r' has not-null key which type is 'ct' derived from primary key.
 -- derivedNotNullKey :: HasConstraintKey Primary r ct => Key NotNull r ct
 -- derivedNotNullKey =  notNullKey constraintKey
diff --git a/src/Database/Relational/Derives.hs b/src/Database/Relational/Derives.hs
--- a/src/Database/Relational/Derives.hs
+++ b/src/Database/Relational/Derives.hs
@@ -9,7 +9,7 @@
 -- Stability   : experimental
 -- Portability : unknown
 --
--- This module defines typed SQLs derived from type informations.
+-- This module defines typed SQLs derived from type information.
 module Database.Relational.Derives (
   -- * Query derivation
   specifiedKey,
diff --git a/src/Database/Relational/InternalTH/Base.hs b/src/Database/Relational/InternalTH/Base.hs
--- a/src/Database/Relational/InternalTH/Base.hs
+++ b/src/Database/Relational/InternalTH/Base.hs
@@ -27,6 +27,7 @@
    Dec, sigD, valD, instanceD,
    TyVarBndr (PlainTV), )
 import Language.Haskell.TH.Compat.Constraint (classP)
+import Language.Haskell.TH.Compat.Data (plainTVspecified)
 import Database.Record.Persistable
   (PersistableWidth, persistableWidth,
    PersistableRecordWidth, runPersistableRecordWidth)
@@ -59,7 +60,7 @@
     template :: TypeQ -> [TypeQ] -> Name -> Q [Dec]
     template ct pcts selN = do
       sig <- sigD selN $
-             forallT (map PlainTV avs)
+             forallT (map plainTVspecified avs)
              (mapM (classP ''PersistableWidth . (:[]) . varT) avs)
              [t| Pi $tyRec $ct |]
       let runPW t = [| runPersistableRecordWidth (persistableWidth :: PersistableRecordWidth $t) |]
diff --git a/src/Database/Relational/Monad/Trans/Assigning.hs b/src/Database/Relational/Monad/Trans/Assigning.hs
--- a/src/Database/Relational/Monad/Trans/Assigning.hs
+++ b/src/Database/Relational/Monad/Trans/Assigning.hs
@@ -71,7 +71,7 @@
   leftsR = Record.columns . targetRecord target
   rights = Record.columns vp
 
--- | Add and assginment.
+-- | Add and assignment.
 (<-#) :: Monad m => AssignTarget r v -> Record Flat v -> Assignings r m ()
 (<-#) =  flip assignTo
 
diff --git a/src/Database/Relational/Monad/Trans/Restricting.hs b/src/Database/Relational/Monad/Trans/Restricting.hs
--- a/src/Database/Relational/Monad/Trans/Restricting.hs
+++ b/src/Database/Relational/Monad/Trans/Restricting.hs
@@ -62,7 +62,7 @@
   query'             = restrictings . query'
   queryMaybe'        = restrictings . queryMaybe'
 
--- | Resticted 'MonadAggregate' instance.
+-- | Restricted 'MonadAggregate' instance.
 instance MonadAggregate m => MonadAggregate (Restrictings c m) where
   groupBy  = restrictings . groupBy
   groupBy' = restrictings . groupBy'
diff --git a/src/Database/Relational/Pi/Unsafe.hs b/src/Database/Relational/Pi/Unsafe.hs
--- a/src/Database/Relational/Pi/Unsafe.hs
+++ b/src/Database/Relational/Pi/Unsafe.hs
@@ -82,7 +82,7 @@
 unsafeExpandIndexes' = expandIndexes'
 {-# DEPRECATED unsafeExpandIndexes' "Use expandIndexes' instead of this." #-}
 
--- | Expand indexes from key. Infered width version.
+-- | Expand indexes from key. Inferred width version.
 expandIndexes :: PersistableWidth a => Pi a b -> [Int]
 expandIndexes = expandIndexes' persistableWidth
 
diff --git a/src/Database/Relational/Projectable.hs b/src/Database/Relational/Projectable.hs
--- a/src/Database/Relational/Projectable.hs
+++ b/src/Database/Relational/Projectable.hs
@@ -234,12 +234,12 @@
 exists =  unsafeProjectSql' . SQL.paren . SQL.defineUniOp SQL.EXISTS
           . Record.unsafeStringSqlList unsafeShowSql'
 
--- | Concatinate operator corresponding SQL /||/ .
+-- | Concatenate operator corresponding SQL /||/ .
 (.||.) :: OperatorContext c
        => Record c a -> Record c a -> Record c a
 (.||.) =  unsafeBinOp (SQL..||.)
 
--- | Concatinate operator corresponding SQL /||/ . Maybe type version.
+-- | Concatenate operator corresponding SQL /||/ . Maybe type version.
 (?||?) :: (OperatorContext c, IsString a)
        => Record c (Maybe a) -> Record c (Maybe a) -> Record c (Maybe a)
 (?||?) =  unsafeBinOp (SQL..||.)
diff --git a/src/Database/Relational/Projectable/Instances.hs b/src/Database/Relational/Projectable/Instances.hs
--- a/src/Database/Relational/Projectable/Instances.hs
+++ b/src/Database/Relational/Projectable/Instances.hs
@@ -37,9 +37,9 @@
 instance SqlContext OverWindow where
   unsafeProjectSqlTerms = Record.unsafeFromSqlTerms
 
--- | full SQL expression is availabe in Flat context
+-- | full SQL expression is available in Flat context
 instance OperatorContext Flat
--- | full SQL expression is availabe in Aggregated context
+-- | full SQL expression is available in Aggregated context
 instance OperatorContext Aggregated
 
 -- | 'Aggregated' context is aggregated context
diff --git a/src/Database/Relational/Projectable/Unsafe.hs b/src/Database/Relational/Projectable/Unsafe.hs
--- a/src/Database/Relational/Projectable/Unsafe.hs
+++ b/src/Database/Relational/Projectable/Unsafe.hs
@@ -31,5 +31,5 @@
 class AggregatedContext ac
 
 
--- | Placeholder parameter type which has real parameter type arguemnt 'p'.
+-- | Placeholder parameter type which has real parameter type argument 'p'.
 data PlaceHolders p = PlaceHolders
diff --git a/src/Database/Relational/Record.hs b/src/Database/Relational/Record.hs
--- a/src/Database/Relational/Record.hs
+++ b/src/Database/Relational/Record.hs
@@ -196,7 +196,7 @@
 unsafeListFromSubQuery :: SubQuery -> RecordList p t
 unsafeListFromSubQuery =  Sub
 
--- | Map record show operatoions and concatinate to single SQL expression.
+-- | Map record show operatoions and concatenate to single SQL expression.
 unsafeStringSqlList :: (p t -> StringSQL) -> RecordList p t -> StringSQL
 unsafeStringSqlList sf = d  where
   d (List ps) = listStringSQL $ map sf ps
diff --git a/src/Database/Relational/Relation.hs b/src/Database/Relational/Relation.hs
--- a/src/Database/Relational/Relation.hs
+++ b/src/Database/Relational/Relation.hs
@@ -121,11 +121,11 @@
 relation :: QuerySimple (Record Flat r) -> Relation () r
 relation =  relation' . addUnitPH
 
--- | Finalize 'QueryAggregate' monad and geneate 'Relation' with place-holder parameter 'p'.
+-- | Finalize 'QueryAggregate' monad and generate 'Relation' with place-holder parameter 'p'.
 aggregateRelation' :: AggregatedQuery p r -> Relation p r
 aggregateRelation' =  unsafeTypeRelation . Aggregate.toSubQuery
 
--- | Finalize 'QueryAggregate' monad and geneate 'Relation'.
+-- | Finalize 'QueryAggregate' monad and generate 'Relation'.
 aggregateRelation :: QueryAggregate (Record Aggregated r) -> Relation () r
 aggregateRelation =  aggregateRelation' . addUnitPH
 
diff --git a/src/Database/Relational/Type.hs b/src/Database/Relational/Type.hs
--- a/src/Database/Relational/Type.hs
+++ b/src/Database/Relational/Type.hs
@@ -302,7 +302,7 @@
 derivedInsert :: (PersistableWidth r, TableDerivable r) => Pi r r' -> Insert r'
 derivedInsert = insert
 
--- | Make typed 'Insert' from 'Config', 'Table' and monadic builded 'InsertTarget' object.
+-- | Make typed 'Insert' from 'Config', 'Table' and monadic built 'InsertTarget' object.
 typedInsertValue' :: Config -> Table r -> InsertTarget p r -> Insert p
 typedInsertValue' config tbl it =
     unsafeTypedInsert'
@@ -312,11 +312,11 @@
     (ci, n) = sqlChunkFromInsertTarget config tbl it
 
 {-# DEPRECATED typedInsertValue "use `typedInsertValue' defaultConfig` instead of this." #-}
--- | Make typed 'Insert' from 'Table' and monadic builded 'InsertTarget' object.
+-- | Make typed 'Insert' from 'Table' and monadic built 'InsertTarget' object.
 typedInsertValue :: Table r -> InsertTarget p r -> Insert p
 typedInsertValue = typedInsertValue' defaultConfig
 
--- | Make typed 'Insert' from 'Config', derived table and monadic builded 'Register' object.
+-- | Make typed 'Insert' from 'Config', derived table and monadic built 'Register' object.
 insertValue' :: TableDerivable r => Config -> Register r (PlaceHolders p) -> Insert p
 insertValue' config rs = typedInsertValue' config (rt rs) $ insertTarget' rs
   where
@@ -324,20 +324,20 @@
     rt =  const derivedTable
 
 {-# DEPRECATED derivedInsertValue' "use `insertValue'` instead of this." #-}
--- | Make typed 'Insert' from 'Config', derived table and monadic builded 'Register' object.
+-- | Make typed 'Insert' from 'Config', derived table and monadic built 'Register' object.
 derivedInsertValue' :: TableDerivable r => Config -> Register r (PlaceHolders p) -> Insert p
 derivedInsertValue' = insertValue'
 
--- | Make typed 'Insert' from 'defaultConfig', derived table and monadic builded 'Register' object.
+-- | Make typed 'Insert' from 'defaultConfig', derived table and monadic built 'Register' object.
 insertValue :: TableDerivable r => Register r (PlaceHolders p) -> Insert p
 insertValue = insertValue' defaultConfig
 
--- | Make typed 'Insert' from 'defaultConfig', derived table and monadic builded 'Register' object with no(unit) placeholder.
+-- | Make typed 'Insert' from 'defaultConfig', derived table and monadic built 'Register' object with no(unit) placeholder.
 insertValueNoPH :: TableDerivable r => Register r () -> Insert ()
 insertValueNoPH = insertValue . (>> return unitPH)
 
 {-# DEPRECATED derivedInsertValue "use `insertValue` instead of this." #-}
--- | Make typed 'Insert' from 'defaultConfig', derived table and monadic builded 'Register' object.
+-- | Make typed 'Insert' from 'defaultConfig', derived table and monadic built 'Register' object.
 derivedInsertValue :: TableDerivable r => Register r (PlaceHolders p) -> Insert p
 derivedInsertValue = insertValue
 
@@ -450,7 +450,7 @@
   show = untypeDelete
 
 
--- | Untype interface for typed no-result type statments
+-- | Untype interface for typed no-result type statements
 --   with single type parameter which represents place-holder parameter 'p'.
 class UntypeableNoFetch s where
   untypeNoFetch :: s p -> String
diff --git a/test/Model.hs b/test/Model.hs
--- a/test/Model.hs
+++ b/test/Model.hs
@@ -35,7 +35,6 @@
   , ("may_str_c3" ,    [t| Maybe String |]) ]
   [''Generic] [0] $ Just 0)
 
-
 $(defineTable defaultConfig "TEST" "set_i"
   [ ("int_i0" ,    [t| Int32 |])  ]
   [''Generic] [0] $ Just 0)
