diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,10 @@
 # Revision history for deriving-aeson
 
+## 0.2.6
+
+* Added `StringModifier` instances to 3 and 4-tuples
+* Fixed the bug making `SumTwoElemArray` point `ObjectWithSingleField`
+
 ## 0.2.5
 
 * Added a generic `CamelTo` constructor
diff --git a/deriving-aeson.cabal b/deriving-aeson.cabal
--- a/deriving-aeson.cabal
+++ b/deriving-aeson.cabal
@@ -1,6 +1,6 @@
 cabal-version:       2.4
 name:                deriving-aeson
-version:             0.2.5
+version:             0.2.6
 synopsis:            Type driven generic aeson instance customisation
 description:         This package provides a newtype wrapper with
   FromJSON/ToJSON instances customisable via a phantom type parameter.
@@ -23,7 +23,7 @@
   exposed-modules:
     Deriving.Aeson
     Deriving.Aeson.Stock
-  build-depends:       base >= 4.12 && <5, aeson >= 1.4.7.0 && <1.5
+  build-depends:       base >= 4.12 && <5, aeson >= 1.4.7.0 && <1.6
   hs-source-dirs: src
   default-language:    Haskell2010
   ghc-options: -Wall -Wcompat
diff --git a/src/Deriving/Aeson.hs b/src/Deriving/Aeson.hs
--- a/src/Deriving/Aeson.hs
+++ b/src/Deriving/Aeson.hs
@@ -106,6 +106,14 @@
 instance (StringModifier a, StringModifier b) => StringModifier (a, b) where
   getStringModifier = getStringModifier @b . getStringModifier @a
 
+-- | Left-to-right (@'flip' '.'@) composition
+instance (StringModifier a, StringModifier b, StringModifier c) => StringModifier (a, b, c) where
+  getStringModifier = getStringModifier @c . getStringModifier @b . getStringModifier @a
+
+-- | Left-to-right (@'flip' '.'@) composition
+instance (StringModifier a, StringModifier b, StringModifier c, StringModifier d) => StringModifier (a, b, c, d) where
+  getStringModifier = getStringModifier @d . getStringModifier @c . getStringModifier @b . getStringModifier @a
+
 instance (KnownSymbol separator, NonEmptyString separator) => StringModifier (CamelTo separator) where
   getStringModifier = camelTo2 char
     where
@@ -165,4 +173,4 @@
   aesonOptions = (aesonOptions @xs) { sumEncoding = ObjectWithSingleField }
 
 instance (AesonOptions xs) => AesonOptions (SumTwoElemArray ': xs) where
-  aesonOptions = (aesonOptions @xs) { sumEncoding = ObjectWithSingleField }
+  aesonOptions = (aesonOptions @xs) { sumEncoding = TwoElemArray }
