diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -126,7 +126,7 @@
 > <!-- scripths:mime text/plain -->
 
 The splice brings one thing into scope, the type
-`type ArtistsSchema = '[Column "ArtistId" Int, Column "Name" (Maybe Text)]`:
+`type ArtistsSchema = '[ '("ArtistId", Int), '("Name", Maybe Text)]`:
 
 ```haskell
 $(declareTable "./data/chinook.db" "artists")
diff --git a/dataframe-persistent.cabal b/dataframe-persistent.cabal
--- a/dataframe-persistent.cabal
+++ b/dataframe-persistent.cabal
@@ -1,7 +1,6 @@
 cabal-version:      3.0
 name:               dataframe-persistent
-version:            0.4.0.1
-
+version:            0.5.0.0
 synopsis: Persistent database integration for the dataframe library
 
 description: This package provides integration between the dataframe library and the Persistent database library, allowing you to load database entities into DataFrames and save DataFrames back to the database.
@@ -44,8 +43,8 @@
                       bytestring >= 0.10 && < 0.14,
                       conduit >= 1.3 && < 1.5,
                       containers >= 0.6.7 && < 0.10,
-                      dataframe-core ^>= 2.1,
-                      dataframe-operations ^>= 2.1,
+                      dataframe-core ^>= 2.2,
+                      dataframe-operations ^>= 2.2,
                       persistent >= 2.14 && < 3,
                       persistent-sqlite >= 2.13 && < 3,
                       resourcet >= 1.2 && < 2,
@@ -65,7 +64,7 @@
                    SchemaTHTests
     build-depends:  base >= 4 && < 5,
                     dataframe >= 1 && < 4,
-                    dataframe-operations ^>= 2.1,
+                    dataframe-operations ^>= 2.2,
                     dataframe-persistent,
                     HUnit >= 1.6 && < 1.8,
                     monad-logger >= 0.3 && < 0.5,
diff --git a/src/DataFrame/IO/Persistent/Schema.hs b/src/DataFrame/IO/Persistent/Schema.hs
--- a/src/DataFrame/IO/Persistent/Schema.hs
+++ b/src/DataFrame/IO/Persistent/Schema.hs
@@ -17,7 +17,7 @@
 @
 -- Typed schema, checked at compile time:
 \$('declareTable' "chinook.db" "artists")
--- generates: type ArtistsSchema = '[Column "ArtistId" Int, Column "Name" (Maybe Text)]
+-- generates: type ArtistsSchema = '[ '("ArtistId", Int), '("Name", Maybe Text)]
 -- read any database/table into it:
 --   readTableTyped \@ArtistsSchema "chinook.db" "artists" :: IO (TypedDataFrame ArtistsSchema)
 
@@ -54,10 +54,9 @@
 
 import DataFrame.IO.Persistent.Schema.Common
 import DataFrame.IO.Persistent.Schema.Introspect
-import DataFrame.Typed.Types (Column)
 
 {- | Read @table@ from the SQLite database at @path@ and emit a typed schema
-synonym, @type \<Table\>Schema = '[Column ...]@. Read into it with
+synonym, @type \<Table\>Schema = '[ '(name, ty), ...]@. Read into it with
 'DataFrame.IO.Persistent.Read.readTableTyped'.
 -}
 declareTable :: FilePath -> String -> Q [Dec]
@@ -77,7 +76,7 @@
 declareTableFromSchema cols name =
     schemaDecl defaultDeclareOptions (T.pack name) cols
 
--- | Emit @type \<Table\>Schema = '[Column ...]@ for the selected columns.
+-- | Emit @type \<Table\>Schema = '[ '(name, ty), ...]@ for the selected columns.
 schemaDecl :: DeclareOptions -> Text -> [ColumnInfo] -> Q [Dec]
 schemaDecl opts table cols0 = do
     let cols = selectColumns opts cols0
@@ -94,7 +93,7 @@
     buildSchemaType
         [(ciName c, thType (resolvedType opts c), isNullable opts c) | c <- cols]
 
--- | Fold @(name, type, nullable)@ triples into a promoted @'[Column name ty]@.
+-- | Fold @(name, type, nullable)@ triples into a promoted @'[ '(name, ty)]@.
 buildSchemaType :: [(Text, Type, Bool)] -> Type
 buildSchemaType = foldr cons PromotedNilT
   where
@@ -102,7 +101,7 @@
 
 columnEntry :: (Text, Type, Bool) -> Type
 columnEntry (name, ty, nullable) =
-    ConT ''Column
+    PromotedTupleT 2
         `AppT` LitT (StrTyLit (T.unpack name))
         `AppT` wrapMaybe nullable ty
 
