diff --git a/cartel.cabal b/cartel.cabal
--- a/cartel.cabal
+++ b/cartel.cabal
@@ -3,11 +3,11 @@
 -- http://www.github.com/massysett/cartel
 --
 -- Script name used to generate: GenCartelCabal.hs
--- Generated on: 2015-01-27 14:23:00.800469 EST
--- Cartel library version: 0.14.0.0
+-- Generated on: 2015-02-13 10:28:24.083472 EST
+-- Cartel library version: 0.14.2.0
 
 name: cartel
-version: 0.14.0.0
+version: 0.14.2.0
 cabal-version: >= 1.16
 license: BSD3
 license-file: LICENSE
diff --git a/lib/Cartel.hs b/lib/Cartel.hs
--- a/lib/Cartel.hs
+++ b/lib/Cartel.hs
@@ -120,6 +120,8 @@
   , otherModules
   , hsSourceDirs
   , extensions
+  , defaultExtensions
+  , otherExtensions
   , buildTools
   , buildable
   , ghcOptions
diff --git a/lib/Cartel/Ast.hs b/lib/Cartel/Ast.hs
--- a/lib/Cartel/Ast.hs
+++ b/lib/Cartel/Ast.hs
@@ -483,8 +483,10 @@
   -- ^ Root directories for the module hierarchy
 
   | Extensions [NonEmptyString]
-  -- ^ Haskell extensions used by every module.
 
+  | DefaultExtensions [NonEmptyString]
+  | OtherExtensions [NonEmptyString]
+
   | BuildTools [Package]
   -- ^ Programs needed to build this package, such as c2hs.
 
@@ -741,11 +743,11 @@
 
 -- # Build info helpers
 
--- ^ A list of packages needed to build this component
+-- | A list of packages needed to build this component
 buildDepends :: HasBuildInfo a => [Package] -> a
 buildDepends = buildInfo . BuildDepends
 
--- ^ Modules used but not exposed.  For libraries, these are
+-- | Modules used but not exposed.  For libraries, these are
 -- hidden modules; for executable, these are auxiliary modules to
 -- be linked with the file in the @main-is@ field.
 --
@@ -755,13 +757,32 @@
 otherModules :: HasBuildInfo a => [NonEmptyString] -> a
 otherModules = buildInfo . OtherModules
 
--- ^ Root directories for the module hierarchy
+-- | Root directories for the module hierarchy
 hsSourceDirs :: HasBuildInfo a => [NonEmptyString] -> a
 hsSourceDirs = buildInfo . HsSourceDirs
 
--- ^ Haskell extensions used by every module.
+-- | Haskell extensions used by every module.  With version 1.22 of
+-- the Cabal library, using this field might get you this warning:
+--
+-- > Warning: For packages using 'cabal-version: >= 1.10' the
+-- > 'extensions' field is deprecated. The new 'default-extensions'
+-- > field lists extensions that are used in all modules in the
+-- > component, while the 'other-extensions' field lists extensions
+-- > that are used in some modules, e.g. via the {-# LANGUAGE #-}
+-- > pragma.
 extensions :: HasBuildInfo a => [NonEmptyString] -> a
 extensions = buildInfo . Extensions
+
+-- | Default extensions.  See 'extensions' for details.  Currently
+-- undocumented, see <https://github.com/haskell/cabal/issues/1517>
+defaultExtensions :: HasBuildInfo a => [NonEmptyString] -> a
+defaultExtensions = buildInfo . DefaultExtensions
+
+-- | Other extensions.  See 'extensions' for details.  Currently
+-- undocumented, see <https://github.com/haskell/cabal/issues/1517>
+otherExtensions :: HasBuildInfo a => [NonEmptyString] -> a
+otherExtensions = buildInfo . OtherExtensions
+
 
 -- | Programs needed to build this package, such as c2hs.
 buildTools :: HasBuildInfo a => [Package] -> a
diff --git a/lib/Cartel/Render.hs b/lib/Cartel/Render.hs
--- a/lib/Cartel/Render.hs
+++ b/lib/Cartel/Render.hs
@@ -289,6 +289,8 @@
     OtherModules ls -> labeledList "other-modules" ls
     HsSourceDirs ls -> labeledList "hs-source-dirs" (fmap escaper ls)
     Extensions ls -> labeledList "extensions" ls
+    DefaultExtensions ls -> labeledList "default-extensions" ls
+    OtherExtensions ls -> labeledList "other-extensions" ls
     BuildTools ls -> renCommas "build-tools" ls
     Buildable b -> labeledIndented "buildable" (render b)
     GHCOptions ls -> labeledList "ghc-options" ls
diff --git a/lib/Cartel/Version.hs b/lib/Cartel/Version.hs
--- a/lib/Cartel/Version.hs
+++ b/lib/Cartel/Version.hs
@@ -11,4 +11,4 @@
 import Data.Word
 
 version :: [Word]
-version = [0,14,0,0]
+version = [0,14,2,0]
diff --git a/tests/Cartel/Generators.hs b/tests/Cartel/Generators.hs
--- a/tests/Cartel/Generators.hs
+++ b/tests/Cartel/Generators.hs
@@ -175,6 +175,8 @@
   , fmap otherModules neslist
   , fmap hsSourceDirs neslist
   , fmap extensions neslist
+  , fmap defaultExtensions neslist
+  , fmap otherExtensions neslist
   , fmap buildTools (genNonEmptyList arbitrary)
   , fmap buildable arbitrary
   , fmap ghcOptions neslist
diff --git a/tests/Decrees.hs b/tests/Decrees.hs
--- a/tests/Decrees.hs
+++ b/tests/Decrees.hs
@@ -10,17 +10,17 @@
 decrees :: [Decree]
 decrees =
 
-  [ Decree ( Meta {modDesc = ModDesc {modPath = "tests/Cartel/Properties.hs", modName = ["Cartel","Properties"]}, linenum = 40, qName = "prop_vcsCompletesInSecs"} ) ( Single Cartel.Properties.prop_vcsCompletesInSecs )
-  , Decree ( Meta {modDesc = ModDesc {modPath = "tests/Cartel/Properties.hs", modName = ["Cartel","Properties"]}, linenum = 42, qName = "prop_constraintCompletesInSecs"} ) ( Single Cartel.Properties.prop_constraintCompletesInSecs )
-  , Decree ( Meta {modDesc = ModDesc {modPath = "tests/Cartel/Properties.hs", modName = ["Cartel","Properties"]}, linenum = 47, qName = "prop_conditionCompletesInSecs"} ) ( Single Cartel.Properties.prop_conditionCompletesInSecs )
-  , Decree ( Meta {modDesc = ModDesc {modPath = "tests/Cartel/Properties.hs", modName = ["Cartel","Properties"]}, linenum = 54, qName = "prop_buildInfoExeCompletesInSecs"} ) ( Single Cartel.Properties.prop_buildInfoExeCompletesInSecs )
-  , Decree ( Meta {modDesc = ModDesc {modPath = "tests/Cartel/Properties.hs", modName = ["Cartel","Properties"]}, linenum = 57, qName = "prop_condBlockExeCompletesInSecs"} ) ( Single Cartel.Properties.prop_condBlockExeCompletesInSecs )
-  , Decree ( Meta {modDesc = ModDesc {modPath = "tests/Cartel/Properties.hs", modName = ["Cartel","Properties"]}, linenum = 60, qName = "prop_exeMainIsCompletesInSecs"} ) ( Single Cartel.Properties.prop_exeMainIsCompletesInSecs )
-  , Decree ( Meta {modDesc = ModDesc {modPath = "tests/Cartel/Properties.hs", modName = ["Cartel","Properties"]}, linenum = 63, qName = "prop_cabalCompletesInSecs"} ) ( Single Cartel.Properties.prop_cabalCompletesInSecs )
-  , Decree ( Meta {modDesc = ModDesc {modPath = "tests/Cartel/Properties.hs", modName = ["Cartel","Properties"]}, linenum = 66, qName = "prop_propertiesCompletesInSecs"} ) ( Single Cartel.Properties.prop_propertiesCompletesInSecs )
-  , Decree ( Meta {modDesc = ModDesc {modPath = "tests/Cartel/Properties.hs", modName = ["Cartel","Properties"]}, linenum = 69, qName = "prop_repositoryCompletesInSecs"} ) ( Single Cartel.Properties.prop_repositoryCompletesInSecs )
-  , Decree ( Meta {modDesc = ModDesc {modPath = "tests/Cartel/Properties.hs", modName = ["Cartel","Properties"]}, linenum = 72, qName = "prop_sectionCompletesInSecs"} ) ( Single Cartel.Properties.prop_sectionCompletesInSecs )
-  , Decree ( Meta {modDesc = ModDesc {modPath = "tests/Cartel/Properties.hs", modName = ["Cartel","Properties"]}, linenum = 75, qName = "prop_executableCompletesInSecs"} ) ( Single Cartel.Properties.prop_executableCompletesInSecs )
-  , Decree ( Meta {modDesc = ModDesc {modPath = "tests/Cartel/Properties.hs", modName = ["Cartel","Properties"]}, linenum = 78, qName = "prop_benchmarkCompletesInSecs"} ) ( Single Cartel.Properties.prop_benchmarkCompletesInSecs )
-  , Decree ( Meta {modDesc = ModDesc {modPath = "tests/Cartel/Properties.hs", modName = ["Cartel","Properties"]}, linenum = 81, qName = "prop_testSuiteCompletesInSecs"} ) ( Single Cartel.Properties.prop_testSuiteCompletesInSecs )
+  [ Decree ( Meta {modDesc = ModDesc {modPath = "tests/Cartel/Properties.hs", modName = ["Cartel","Properties"]}, linenum = 41, qName = "prop_vcsCompletesInSecs"} ) ( Single Cartel.Properties.prop_vcsCompletesInSecs )
+  , Decree ( Meta {modDesc = ModDesc {modPath = "tests/Cartel/Properties.hs", modName = ["Cartel","Properties"]}, linenum = 43, qName = "prop_constraintCompletesInSecs"} ) ( Single Cartel.Properties.prop_constraintCompletesInSecs )
+  , Decree ( Meta {modDesc = ModDesc {modPath = "tests/Cartel/Properties.hs", modName = ["Cartel","Properties"]}, linenum = 48, qName = "prop_conditionCompletesInSecs"} ) ( Single Cartel.Properties.prop_conditionCompletesInSecs )
+  , Decree ( Meta {modDesc = ModDesc {modPath = "tests/Cartel/Properties.hs", modName = ["Cartel","Properties"]}, linenum = 55, qName = "prop_buildInfoExeCompletesInSecs"} ) ( Single Cartel.Properties.prop_buildInfoExeCompletesInSecs )
+  , Decree ( Meta {modDesc = ModDesc {modPath = "tests/Cartel/Properties.hs", modName = ["Cartel","Properties"]}, linenum = 58, qName = "prop_condBlockExeCompletesInSecs"} ) ( Single Cartel.Properties.prop_condBlockExeCompletesInSecs )
+  , Decree ( Meta {modDesc = ModDesc {modPath = "tests/Cartel/Properties.hs", modName = ["Cartel","Properties"]}, linenum = 61, qName = "prop_exeMainIsCompletesInSecs"} ) ( Single Cartel.Properties.prop_exeMainIsCompletesInSecs )
+  , Decree ( Meta {modDesc = ModDesc {modPath = "tests/Cartel/Properties.hs", modName = ["Cartel","Properties"]}, linenum = 64, qName = "prop_cabalCompletesInSecs"} ) ( Single Cartel.Properties.prop_cabalCompletesInSecs )
+  , Decree ( Meta {modDesc = ModDesc {modPath = "tests/Cartel/Properties.hs", modName = ["Cartel","Properties"]}, linenum = 67, qName = "prop_propertiesCompletesInSecs"} ) ( Single Cartel.Properties.prop_propertiesCompletesInSecs )
+  , Decree ( Meta {modDesc = ModDesc {modPath = "tests/Cartel/Properties.hs", modName = ["Cartel","Properties"]}, linenum = 70, qName = "prop_repositoryCompletesInSecs"} ) ( Single Cartel.Properties.prop_repositoryCompletesInSecs )
+  , Decree ( Meta {modDesc = ModDesc {modPath = "tests/Cartel/Properties.hs", modName = ["Cartel","Properties"]}, linenum = 73, qName = "prop_sectionCompletesInSecs"} ) ( Single Cartel.Properties.prop_sectionCompletesInSecs )
+  , Decree ( Meta {modDesc = ModDesc {modPath = "tests/Cartel/Properties.hs", modName = ["Cartel","Properties"]}, linenum = 76, qName = "prop_executableCompletesInSecs"} ) ( Single Cartel.Properties.prop_executableCompletesInSecs )
+  , Decree ( Meta {modDesc = ModDesc {modPath = "tests/Cartel/Properties.hs", modName = ["Cartel","Properties"]}, linenum = 79, qName = "prop_benchmarkCompletesInSecs"} ) ( Single Cartel.Properties.prop_benchmarkCompletesInSecs )
+  , Decree ( Meta {modDesc = ModDesc {modPath = "tests/Cartel/Properties.hs", modName = ["Cartel","Properties"]}, linenum = 82, qName = "prop_testSuiteCompletesInSecs"} ) ( Single Cartel.Properties.prop_testSuiteCompletesInSecs )
   ]
diff --git a/tests/cartel-visual-test.hs b/tests/cartel-visual-test.hs
--- a/tests/cartel-visual-test.hs
+++ b/tests/cartel-visual-test.hs
@@ -1,8 +1,5 @@
--- | Generates random Cabal text.  The program takes two arguments.
--- The first is a size parameter.  This should be a non-negative
--- integer.  Bigger sizes will result in bigger results generated.
--- The second argument is the random seed.  It should be any integer.
--- Different seeds should generate different results.
+-- | Generates random Cabal text.  See the 'help' function below
+-- for details on what arguments to use.
 module Main where
 
 import Data.Word
