diff --git a/Language/Haskell/Modules/ModuVerse.hs b/Language/Haskell/Modules/ModuVerse.hs
--- a/Language/Haskell/Modules/ModuVerse.hs
+++ b/Language/Haskell/Modules/ModuVerse.hs
@@ -45,10 +45,10 @@
 import System.IO.Error (isDoesNotExistError, isUserError)
 
 #if MIN_VERSION_haskell_src_exts(1,14,0)
-deriving instance Ord Extension
-deriving instance Ord KnownExtension
 nameToExtension x = EnableExtension x
 #else
+deriving instance Ord Extension
+deriving instance Ord KnownExtension
 nameToExtension x = id x
 #endif
 
@@ -99,7 +99,7 @@
     , BangPatterns, TemplateHaskell, ForeignFunctionInterface, {- Arrows, -} Generics, NamedFieldPuns, PatternGuards
     , MagicHash, TypeFamilies, StandaloneDeriving, TypeOperators, RecordWildCards, GADTs, UnboxedTuples
     , PackageImports, QuasiQuotes, TransformListComp, ViewPatterns, XmlSyntax, RegularPatterns, TupleSections
-#if MIN_VERSION_haskell_src_exts(1,14,0)
+#if MIN_VERSION_haskell_src_exts(1,15,0)
     , ExplicitNamespaces
 #endif
     ]
diff --git a/Language/Haskell/Modules/Util/SrcLoc.hs b/Language/Haskell/Modules/Util/SrcLoc.hs
--- a/Language/Haskell/Modules/Util/SrcLoc.hs
+++ b/Language/Haskell/Modules/Util/SrcLoc.hs
@@ -1,4 +1,4 @@
-{-# LANGUAGE BangPatterns, FlexibleInstances, ScopedTypeVariables, UndecidableInstances #-}
+{-# LANGUAGE BangPatterns, CPP, FlexibleInstances, ScopedTypeVariables, UndecidableInstances #-}
 {-# OPTIONS_GHC -Wall -fno-warn-orphans #-}
 module Language.Haskell.Modules.Util.SrcLoc
     ( HasSpanInfo(..)
@@ -117,7 +117,11 @@
     spanInfo (A.WarnPragmaDecl l _) = l
     spanInfo (A.InlineSig l _ _ _) = l
     spanInfo (A.InlineConlikeSig l _ _) = l
+#if MIN_VERSION_haskell_src_exts(1,14,0)
+    spanInfo (A.SpecSig l _ _ _) = l
+#else
     spanInfo (A.SpecSig l _ _) = l
+#endif
     spanInfo (A.SpecInlineSig l _ _ _ _) = l
     spanInfo (A.InstSig l _ _) = l
     spanInfo (A.AnnPragma l _) = l
diff --git a/Language/Haskell/Modules/Util/Symbols.hs b/Language/Haskell/Modules/Util/Symbols.hs
--- a/Language/Haskell/Modules/Util/Symbols.hs
+++ b/Language/Haskell/Modules/Util/Symbols.hs
@@ -47,7 +47,11 @@
     foldDeclared f r (A.WarnPragmaDecl _ _) = f Nothing r
     foldDeclared f r (A.InlineSig _ _ _ x) = foldDeclared f r x
     foldDeclared f r (A.InlineConlikeSig _ _ x) = foldDeclared f r x
+#if MIN_VERSION_haskell_src_exts(1,14,0)
+    foldDeclared f r (A.SpecSig _ _ x _) = foldDeclared f r x
+#else
     foldDeclared f r (A.SpecSig _ x _) = foldDeclared f r x
+#endif
     foldDeclared f r (A.SpecInlineSig _ _ _ x _) = foldDeclared f r x
     foldDeclared f r (A.InstSig _ _ x) = foldDeclared f r x
     foldDeclared f r (A.AnnPragma _ _) = f Nothing r
@@ -80,7 +84,11 @@
     foldDeclared f r (A.PNPlusK _ x _) = foldDeclared f r x	-- n+k pattern
     foldDeclared f r (A.PInfixApp _ p1 _qn p2) = let r' = foldDeclared f r p1 in foldDeclared f r' p2	-- pattern with an infix data constructor
     foldDeclared f r (A.PApp _ _ ps) = foldl (foldDeclared f) r ps	-- data constructor and argument patterns
+#if MIN_VERSION_haskell_src_exts(1,14,0)
+    foldDeclared f r (A.PTuple _ _ ps) = foldl (foldDeclared f) r ps	-- tuple pattern
+#else
     foldDeclared f r (A.PTuple _ ps) = foldl (foldDeclared f) r ps	-- tuple pattern
+#endif
     foldDeclared f r (A.PList _ ps) = foldl (foldDeclared f) r ps	-- list pattern
     foldDeclared f r (A.PParen _ x) = foldDeclared f r x	-- parenthesized pattern
     foldDeclared f r (A.PRec _ _qn fs) = foldl (foldDeclared f) r fs	-- labelled pattern, record style
diff --git a/Tests.hs b/Tests.hs
--- a/Tests.hs
+++ b/Tests.hs
@@ -6,7 +6,11 @@
 import Language.Haskell.Exts.Annotated (defaultParseMode, exactPrint, parseFileWithComments, ParseResult(ParseOk))
 import Language.Haskell.Exts.Annotated.Syntax as A (Module)
 import Language.Haskell.Exts.Comments (Comment)
+#if MIN_VERSION_haskell_src_exts(1,14,0)
+import Language.Haskell.Exts.Extension (Extension(..), KnownExtension(..))
+#else
 import Language.Haskell.Exts.Extension (Extension(..))
+#endif
 import Language.Haskell.Exts.SrcLoc (SrcSpanInfo)
 import Language.Haskell.Exts.Syntax (ModuleName(ModuleName))
 import Language.Haskell.Modules (CleanT, mergeModules, modifyExtensions, MonadClean, noisily, putModule, runCleanT, splitModuleDecls, withCurrentDirectory)
@@ -82,7 +86,11 @@
 
 test2a :: MonadClean m => [ModuleName] -> m ()
 test2a u =
+#if MIN_VERSION_haskell_src_exts(1,14,0)
+         do modifyExtensions (++ [EnableExtension MultiParamTypeClasses])
+#else
          do modifyExtensions (++ [MultiParamTypeClasses])
+#endif
             -- We *must* clean the split results, or there will be
             -- circular imports created when we merge.
             mapM_ putModule u
@@ -91,7 +99,11 @@
 
 test2b :: MonadClean m => [ModuleName] -> m ()
 test2b u =
+#if MIN_VERSION_haskell_src_exts(1,14,0)
+         do modifyExtensions (++ [EnableExtension MultiParamTypeClasses])
+#else
          do modifyExtensions (++ [MultiParamTypeClasses])
+#endif
             mapM_ putModule u
             _ <- splitModuleDecls "Data/Logic/Classes/Literal.hs"
             _ <- mergeModules
@@ -103,7 +115,11 @@
 
 test2c :: MonadClean m => [ModuleName] -> m ()
 test2c u =
+#if MIN_VERSION_haskell_src_exts(1,14,0)
+         do modifyExtensions (++ [EnableExtension MultiParamTypeClasses])
+#else
          do modifyExtensions (++ [MultiParamTypeClasses])
+#endif
             mapM_ putModule u
             _ <- splitModuleDecls "Data/Logic/Classes/Literal.hs"
             _ <- mergeModules
diff --git a/debian/changelog b/debian/changelog
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+haskell-module-management (0.17) unstable; urgency=low
+
+  * Changes for haskell-src-exts-1.14.0
+
+ -- David Fox <dsf@seereason.com>  Tue, 03 Sep 2013 06:43:41 -0700
+
 haskell-module-management (0.16.1) unstable; urgency=low
 
   * Add missing CLI files to extra-source-files list
diff --git a/module-management.cabal b/module-management.cabal
--- a/module-management.cabal
+++ b/module-management.cabal
@@ -1,5 +1,5 @@
 Name:               module-management
-Version:            0.16.1
+Version:            0.17
 Synopsis:           Clean up module imports, split and merge modules
 Description:        Clean up module imports, split and merge modules.
 Homepage:           http://src.seereason.com/module-management
@@ -89,7 +89,7 @@
     cmdargs,
     lens
 
-  ghc-options: -O0
+  ghc-options: -O2
 
 Executable tests
   Main-is: Tests.hs
diff --git a/scripts/CLI.hs b/scripts/CLI.hs
--- a/scripts/CLI.hs
+++ b/scripts/CLI.hs
@@ -230,7 +230,8 @@
            (["q"], throwIO . Callback "quieter" $ \next -> do
                     liftIO (hPutStrLn stderr "Decreasing Verbosity")
                     quietly' next),
-           (["help"],  liftIO (hPutStrLn stderr "help text")),
+           -- The error message is more helpful
+           -- (["help"],  liftIO (hPutStrLn stderr "help text")),
            (["verse"], liftCT (verse args)),
            (["clean"], liftCT (clean args)),
            (["dir"],   liftCT (dir args)),
diff --git a/testdata.tar.gz b/testdata.tar.gz
Binary files a/testdata.tar.gz and b/testdata.tar.gz differ
