diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,5 +1,11 @@
 # Changelog for list-tuple
 
+## 0.1.4.0
+
+2023.08.17
+
+Support [OneTuple](https://hackage.haskell.org/package/OneTuple) 0.3, 0.4.
+
 ## 0.1.3.0
 
 2020.06.12
diff --git a/Setup.hs b/Setup.hs
--- a/Setup.hs
+++ b/Setup.hs
@@ -31,7 +31,7 @@
       tempDir <- (++ "/list-tuple") <$> getTemporaryDirectory
       createDirectoryIfMissing True tempDir
       (tempPath, temp) <- openTempFile tempDir file
-      putStrLn $ "temporaly file: " ++ tempPath
+      putStrLn $ "temporary file: " ++ tempPath
       hSetNewlineMode template noNewlineTranslation
       hSetNewlineMode temp noNewlineTranslation
       hSetNewlineMode stdin noNewlineTranslation
@@ -65,8 +65,8 @@
       | otherwise = [line]
 
     embed :: Word -> [String] -> [String] -> [String]
-    embed l template templateAt
-      | l >= 3 = concatMap go template
+    embed l templateItem templateAt
+      | l >= 3 = concatMap go templateItem
       | otherwise = error "length must be larger than or equal to 3"
       where
         go "" = [""]
diff --git a/list-tuple.cabal b/list-tuple.cabal
--- a/list-tuple.cabal
+++ b/list-tuple.cabal
@@ -1,7 +1,7 @@
 cabal-version: 2.2
 
 name:           list-tuple
-version:        0.1.3.0
+version:        0.1.4.0
 synopsis:       List-like operations for tuples
 description:    List-like operations for tuples
 category:       Data
@@ -14,9 +14,11 @@
 license-file:   LICENSE
 build-type:     Custom
 
-extra-source-files:
+extra-doc-files:
     README.md
     ChangeLog.md
+
+extra-source-files:
     template/List.hs
     template/ListItem.hs
     template/ListAt.hs
@@ -25,8 +27,14 @@
   type: git
   location: https://github.com/kakkun61/tuple
 
+custom-setup
+  setup-depends:
+      Cabal >=2 && <4,
+      base >=4.10 && <5,
+      directory >=1.3 && <1.4
+
 common common
-  build-depends:    base >=4.10 && <4.15
+  build-depends:    base >=4.10 && <5
   ghc-options:      -Wall
                     -Wcompat
                     -Wincomplete-uni-patterns
@@ -34,7 +42,6 @@
                     -Wmonomorphism-restriction
                     -Wmissing-exported-signatures
                     -Wmissing-home-modules
-                    -Wmissing-import-lists
                     -Widentities
                     -Wredundant-constraints
                     -Wno-name-shadowing
@@ -44,12 +51,6 @@
                     -Wpartial-fields
   default-language: Haskell2010
 
-custom-setup
-  setup-depends:
-      Cabal
-    , base
-    , directory
-
 library
   import:          common
   exposed-modules: Data.Tuple.List
@@ -58,11 +59,10 @@
                    Data.Tuple.List.Only
   autogen-modules: Data.Tuple.List
   hs-source-dirs:  src
-  build-depends:   OneTuple >=0.2 && <0.3,
+  build-depends:   OneTuple >=0.2 && <0.5,
                    Only >=0.1 && <0.2,
                    single-tuple >=0.1 && <0.2
-  if impl(ghc >= 8.4.0)
-    ghc-options:   -Wmissing-export-lists
+  ghc-options:     -Wmissing-import-lists
 
 test-suite test
   import:             common
@@ -75,10 +75,10 @@
                       -rtsopts
                       -with-rtsopts=-N
   build-depends:      list-tuple,
-                      Only,
-                      deepseq,
-                      hspec,
-                      should-not-typecheck,
+                      Only >=0.1 && <0.2,
+                      deepseq >=1.4 && <1.5,
+                      hspec >=2.11 && <2.12,
+                      should-not-typecheck >=2.1 && <2.2,
                       single-tuple,
-                      text
+                      text >=1.2 && <1.3
   build-tool-depends: hspec-discover:hspec-discover
diff --git a/src/Data/Tuple/List/Identity.hs b/src/Data/Tuple/List/Identity.hs
--- a/src/Data/Tuple/List/Identity.hs
+++ b/src/Data/Tuple/List/Identity.hs
@@ -22,8 +22,8 @@
 import Prelude ()
 
 import Data.Functor.Identity (Identity)
-import Data.Tuple.List       (type (!!), Cons, HasAt, HasCons, HasHead, HasInit, HasLast, HasLength, HasReverse,
-                              HasTail, HasUncons, Head, Init, Last, Length, Reverse, Tail)
+import Data.Tuple.List       (Cons, HasAt, HasCons, HasHead, HasInit, HasLast, HasLength, HasReverse, HasTail,
+                              HasUncons, Head, Init, Last, Length, Reverse, Tail, type (!!))
 
 -- 1
 
diff --git a/src/Data/Tuple/List/OneTuple.hs b/src/Data/Tuple/List/OneTuple.hs
--- a/src/Data/Tuple/List/OneTuple.hs
+++ b/src/Data/Tuple/List/OneTuple.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP                   #-}
 {-# LANGUAGE DataKinds             #-}
 {-# LANGUAGE FlexibleInstances     #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
@@ -19,10 +20,64 @@
 
 module Data.Tuple.List.OneTuple () where
 
+#if MIN_VERSION_OneTuple(0,3,0)
+#if !MIN_VERSION_base(4,15,0)
 import Prelude ()
 
-import Data.Tuple.List     (type (!!), Cons, HasAt, HasCons, HasHead, HasInit, HasLast, HasLength, HasReverse, HasTail,
-                            HasUncons, Head, Init, Last, Length, Reverse, Tail)
+import Data.Tuple.List (Cons, HasAt, HasCons, HasHead, HasInit, HasLast, HasLength, HasReverse, HasTail, HasUncons,
+                        Head, Init, Last, Length, Reverse, Tail, type (!!))
+import Data.Tuple.Solo (Solo)
+
+-- 1
+
+type instance Cons a () = Solo a
+type instance Head (Solo a) = a
+type instance Tail (Solo a) = ()
+type instance Init (Solo a) = ()
+type instance Last (Solo a) = a
+type instance Length (Solo a) = 1
+
+instance HasHead (Solo a)
+
+instance HasTail (Solo a)
+
+instance HasInit (Solo a)
+
+instance HasLast (Solo a)
+
+instance HasCons a ()
+
+instance HasUncons (Solo a)
+
+instance HasLength (Solo a)
+
+type instance Reverse (Solo a) = Solo a
+
+instance HasReverse (Solo a)
+
+type instance (Solo a) !! 0 = a
+
+instance HasAt (Solo a) 0
+
+-- 2
+
+type instance Cons a (Solo b) = (a, b)
+type instance Tail (a, b) = Solo b
+type instance Init (a, b) = Solo a
+
+instance HasTail (a, b)
+
+instance HasInit (a, b)
+
+instance HasCons a (Solo b)
+
+instance HasUncons (a, b)
+#endif
+#else
+import Prelude ()
+
+import Data.Tuple.List     (Cons, HasAt, HasCons, HasHead, HasInit, HasLast, HasLength, HasReverse, HasTail, HasUncons,
+                            Head, Init, Last, Length, Reverse, Tail, type (!!))
 import Data.Tuple.OneTuple (OneTuple)
 
 -- 1
@@ -69,3 +124,4 @@
 instance HasCons a (OneTuple b)
 
 instance HasUncons (a, b)
+#endif
diff --git a/src/Data/Tuple/List/Only.hs b/src/Data/Tuple/List/Only.hs
--- a/src/Data/Tuple/List/Only.hs
+++ b/src/Data/Tuple/List/Only.hs
@@ -21,8 +21,8 @@
 
 import Prelude ()
 
-import Data.Tuple.List (type (!!), Cons, HasAt, HasCons, HasHead, HasInit, HasLast, HasLength, HasReverse, HasTail,
-                        HasUncons, Head, Init, Last, Length, Reverse, Tail)
+import Data.Tuple.List (Cons, HasAt, HasCons, HasHead, HasInit, HasLast, HasLength, HasReverse, HasTail, HasUncons,
+                        Head, Init, Last, Length, Reverse, Tail, type (!!))
 import Data.Tuple.Only (Only)
 
 -- 1
diff --git a/template/List.hs b/template/List.hs
--- a/template/List.hs
+++ b/template/List.hs
@@ -1,4 +1,5 @@
 {-# LANGUAGE AllowAmbiguousTypes    #-}
+{-# LANGUAGE CPP                    #-}
 {-# LANGUAGE DataKinds              #-}
 {-# LANGUAGE DefaultSignatures      #-}
 {-# LANGUAGE FlexibleContexts       #-}
@@ -30,7 +31,7 @@
 -- This is a bit tricky of classes because Haskell does not have 1-tuples.
 -- If you use 'Data.Tuple.Only.Only', 'Data.Tuple.OneTuple.OneTuple' or 'Data.Functor.Identity.Identity' as 1-tuples,
 -- import @Data.Tuple.List.Only@, @Data.Tuple.List.OneTuple@ or @Data.Tuple.List.Identity@ respectively
--- and classes without a prime (dash) symbol, for examle 'HasHead'', are useful,
+-- and classes without a prime (dash) symbol, for example 'HasHead'', are useful,
 -- you can also use classes with a prime (dash) symbol.
 -- If you use 'Data.Tuple.Single.Single' class for polymorphic 1-tuples, you should use classes with a prime (dash) symbol.
 
@@ -44,7 +45,7 @@
   , Init
   , Length
     -- ** Type classes
-    -- This clases are for all n-tuples including abstract 1-tuples, 2-tuples.
+    -- These classes are for all n-tuples including abstract 1-tuples, 2-tuples.
   , HasHead' (..)
   , HasLast' (..)
   , HasTail' (..)
@@ -52,7 +53,7 @@
   , HasCons' (..)
   , HasUncons' (..)
     -- ** More concrete type classes
-    -- This classes are for n-tuples (n ≦ 2) and for concrete 1-tuples, 2-tupes.
+    -- These classes are for n-tuples (n ≦ 2) and for concrete 1-tuples, 2-tuples.
   , HasHead (..)
   , HasLast (..)
   , HasTail (..)
@@ -64,7 +65,7 @@
   , pattern Null
   , pattern Cons'
   , pattern Cons
-    -- * List transfomations
+    -- * List transformations
   , Reverse
   , HasReverse (..)
   , HasReverse' (..)
@@ -79,11 +80,18 @@
 import Data.Functor.Identity (Identity)
 import Data.Kind             (Type)
 import Data.Proxy            (Proxy (Proxy))
-import Data.Tuple.OneTuple   (OneTuple)
 import Data.Tuple.Only       (Only)
 import Data.Tuple.Single     (Single (unwrap, wrap))
 import GHC.TypeLits          (ErrorMessage (Text), KnownNat, Nat, TypeError, natVal)
 
+#if MIN_VERSION_OneTuple(0,3,0)
+#if !MIN_VERSION_base(4,15,0)
+import Data.Tuple.Solo   (Solo)
+#endif
+#else
+import Data.Tuple.OneTuple (OneTuple)
+#endif
+
 -- Basic functions
 
 type family Cons a u :: Type
@@ -253,12 +261,28 @@
   uncons' t = (unwrap t, ())
 
 {-# COMPLETE Cons' :: Identity #-}
-{-# COMPLETE Cons' :: OneTuple #-}
 {-# COMPLETE Cons' :: Only #-}
+
+#if MIN_VERSION_OneTuple(0,3,0)
+#if !MIN_VERSION_base(4,15,0)
+{-# COMPLETE Cons' :: Solo #-}
+#endif
+#else
+{-# COMPLETE Cons' :: OneTuple #-}
+#endif
+
 {-# COMPLETE Cons :: Identity #-}
-{-# COMPLETE Cons :: OneTuple #-}
 {-# COMPLETE Cons :: Only #-}
 
+#if MIN_VERSION_OneTuple(0,3,0)
+#if !MIN_VERSION_base(4,15,0)
+{-# COMPLETE Cons :: Solo #-}
+#endif
+#else
+{-# COMPLETE Cons :: OneTuple #-}
+#endif
+
+
 instance {-# OVERLAPPABLE #-} Single c => HasLength (c a) where
   length _ = 1
 
@@ -417,3 +441,27 @@
 ---- embed 49
 
 ---- embed 50
+
+---- embed 51
+
+---- embed 52
+
+---- embed 53
+
+---- embed 54
+
+---- embed 55
+
+---- embed 56
+
+---- embed 57
+
+---- embed 58
+
+---- embed 59
+
+---- embed 60
+
+---- embed 61
+
+---- embed 62
diff --git a/test/Data/Tuple/List/IdentitySpec.hs b/test/Data/Tuple/List/IdentitySpec.hs
--- a/test/Data/Tuple/List/IdentitySpec.hs
+++ b/test/Data/Tuple/List/IdentitySpec.hs
@@ -1,9 +1,12 @@
 {-# LANGUAGE DataKinds           #-}
 {-# LANGUAGE ScopedTypeVariables #-}
-{-# LANGUAGE TypeApplications#-}
-{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE TypeApplications    #-}
+{-# LANGUAGE TypeFamilies        #-}
 
-{-# OPTIONS_GHC -fdefer-type-errors -Wno-deferred-type-errors -Wno-redundant-constraints #-}
+{-# OPTIONS_GHC -fdefer-type-errors #-}
+{-# OPTIONS_GHC -Wno-deferred-type-errors #-}
+{-# OPTIONS_GHC -Wno-redundant-constraints #-}
+{-# OPTIONS_GHC -Wno-incomplete-patterns #-}
 
 module Data.Tuple.List.IdentitySpec (spec) where
 
@@ -12,11 +15,11 @@
 
 import Test.Hspec
 
-import Prelude hiding (head, tail, init, last, length, reverse, (!!))
+import Prelude hiding (head, init, last, length, reverse, tail, (!!))
 
-import           Data.Functor.Identity
-import           Data.Proxy
-import           Test.ShouldNotTypecheck
+import Data.Functor.Identity
+import Data.Proxy
+import Test.ShouldNotTypecheck
 
 spec :: Spec
 spec = do
@@ -54,7 +57,7 @@
         length (Identity ()) `shouldBe` (1 :: Int)
 
       it "Null" $ do
-        shouldNotTypecheck $ case Identity () of { Null -> False ; _ -> False }
+        shouldNotTypecheck $ case Identity () of { Null -> False }
 
       describe "Cons'" $ do
         it "construct" $ do
@@ -62,7 +65,7 @@
           (Cons a () :: Identity ()) `shouldBe` Identity a
 
         it "deconstruct" $ do
-          case Identity () of { Cons () () -> True ; _ -> False } `shouldBe` True
+          case Identity () of { Cons () () -> True } `shouldBe` True
 
       it "reverse" $ do
         let a = ()
diff --git a/test/Data/Tuple/ListSpec.hs b/test/Data/Tuple/ListSpec.hs
--- a/test/Data/Tuple/ListSpec.hs
+++ b/test/Data/Tuple/ListSpec.hs
@@ -1,9 +1,9 @@
 {-# LANGUAGE DataKinds           #-}
 {-# LANGUAGE ScopedTypeVariables #-}
-{-# LANGUAGE TypeApplications #-}
-{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE TypeApplications    #-}
+{-# LANGUAGE TypeFamilies        #-}
 
-{-# OPTIONS_GHC -fdefer-type-errors -Wno-deferred-type-errors -Wno-redundant-constraints #-}
+{-# OPTIONS_GHC -fdefer-type-errors -Wno-deferred-type-errors -Wno-redundant-constraints -Wno-incomplete-patterns #-}
 
 module Data.Tuple.ListSpec (spec) where
 
@@ -12,10 +12,10 @@
 import Test.Hspec
 import Test.ShouldNotTypecheck
 
-import Prelude hiding (head, tail, init, last, length, reverse, (!!))
+import Prelude hiding (head, init, last, length, reverse, tail, (!!))
 
-import           Data.Proxy
-import           Data.Tuple.Single
+import Data.Proxy
+import Data.Tuple.Single
 
 spec :: Spec
 spec = do
@@ -64,7 +64,7 @@
         length () `shouldBe` (0 :: Int)
 
       it "Null" $ do
-        case () of { Null -> True ; _ -> False } `shouldBe` True
+        case () of { Null -> True } `shouldBe` True
 
       describe "Cons'" $ do
         it "construct" $ do
@@ -143,7 +143,7 @@
        length (Proxy :: Proxy Int) `shouldBe` (0 :: Int)
 
       it "Null" $ do
-        case (Proxy :: Proxy Int) of { Null -> True ; _ -> False } `shouldBe` True
+        case (Proxy :: Proxy Int) of { Null -> True } `shouldBe` True
 
       describe "Cons'" $ do
         it "construct" $ do
@@ -463,7 +463,7 @@
           a = 0
           b = 1
           c = 2
-        case (a, b, c) of { Cons' a' (b', c') -> (a, b, c) == (a', b', c')  ; _ -> False } `shouldBe` True
+        case (a, b, c) of { Cons' a' (b', c') -> (a, b, c) == (a', b', c') } `shouldBe` True
 
     describe "Cons" $ do
       it "construct" $ do
@@ -480,7 +480,7 @@
           a = 0
           b = 1
           c = 2
-        case (a, b, c) of { Cons a' (b', c') -> (a, b, c) == (a', b', c')  ; _ -> False } `shouldBe` True
+        case (a, b, c) of { Cons a' (b', c') -> (a, b, c) == (a', b', c') } `shouldBe` True
 
     it "reverse'" $ do
       let
