diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,9 +1,13 @@
 # Revision history for pa-label
 
+## 0.1.2.0 -- 2024-09-04
+
+- Add `addToT2`
+
 ## 0.1.1.0 -- 2024-03-18
 
-* Add `zipT2/zipT3`, `unzipT2/unzipT3`
+- Add `zipT2/zipT3`, `unzipT2/unzipT3`
 
 ## 0.1.0.0 -- 2023-05-19
 
-* First version; contains the `Label` type, `T2`/`T3`, `E2`/`E3`, and some helpers.
+- First version; contains the `Label` type, `T2`/`T3`, `E2`/`E3`, and some helpers.
diff --git a/pa-label.cabal b/pa-label.cabal
--- a/pa-label.cabal
+++ b/pa-label.cabal
@@ -1,7 +1,7 @@
 cabal-version:      3.0
 -- !!! ATTN: file autogenerated from pa-template.cabal.mustache on toplevel !!!
 name:               pa-label
-version:            0.1.1.0
+version:            0.1.2.0
 synopsis:           Labels, and labelled tuples and enums (GHC >9.2)
 description:        
 license:            BSD-3-Clause
@@ -60,6 +60,10 @@
 
     -- to enable the `type` keyword in import lists (ormolu uses this automatically)
     ExplicitNamespaces
+
+    -- allows defining pattern synonyms, but also the `import Foo (pattern FooPattern)` import syntax
+    PatternSynonyms
+
 
   default-language: GHC2021
 
diff --git a/src/Label.hs b/src/Label.hs
--- a/src/Label.hs
+++ b/src/Label.hs
@@ -15,6 +15,7 @@
     focusOnField,
     monoMapT2,
     tupleToT2,
+    addToT2,
     zipT2,
     unzipT2,
     T3 (..),
@@ -171,6 +172,10 @@
 -- @tupleToT2 @"left" @"right" ('c', True) :: T2 "left" Char "right" Bool@
 tupleToT2 :: forall l1 l2 t1 t2. (t1, t2) -> T2 l1 t1 l2 t2
 tupleToT2 (t1, t2) = T2 (label @l1 t1) (label @l2 t2)
+
+-- | Add a field to the end of a T2, turning it into a T3.
+addToT2 :: forall l1 l2 l3 t1 t2 t3. Label l3 t3 -> T2 l1 t1 l2 t2 -> T3 l1 t1 l2 t2 l3 t3
+addToT2 new (T2 a b) = T3 a b new
 
 -- | If you have a tuple of lists, make it into a list of tuples. The names are attached to each value.
 zipT2 ::
