diff --git a/CHANGES.txt b/CHANGES.txt
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,5 +1,7 @@
 Changelog for CmdArgs
 
+0.10.15
+    #43, GHC 8.2 compatibility
 0.10.14
     #39, ensure correct line breaks in HTML help output
     #18, preserve manual \n in help messages
diff --git a/Data/Generics/Any.hs b/Data/Generics/Any.hs
--- a/Data/Generics/Any.hs
+++ b/Data/Generics/Any.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE ExistentialQuantification #-}
 
 module Data.Generics.Any where
@@ -8,7 +9,6 @@
 import Data.Data hiding (toConstr, typeOf, dataTypeOf, isAlgType)
 import Data.List
 import Data.Maybe
-import qualified Data.Typeable.Internal as I
 import System.IO.Unsafe
 
 
@@ -67,7 +67,7 @@
 typeShell = tyconUQname . typeShellFull
 
 typeShellFull :: Any -> String
-typeShellFull = I.tyConName . typeRepTyCon . typeOf
+typeShellFull = tyConName . typeRepTyCon . typeOf
 
 typeName :: Any -> String
 typeName = show . typeOf
diff --git a/LICENSE b/LICENSE
--- a/LICENSE
+++ b/LICENSE
@@ -1,4 +1,4 @@
-Copyright Neil Mitchell 2009-2016.
+Copyright Neil Mitchell 2009-2017.
 All rights reserved.
 
 Redistribution and use in source and binary forms, with or without
diff --git a/System/Console/CmdArgs/Explicit/Type.hs b/System/Console/CmdArgs/Explicit/Type.hs
--- a/System/Console/CmdArgs/Explicit/Type.hs
+++ b/System/Console/CmdArgs/Explicit/Type.hs
@@ -181,11 +181,14 @@
 ---------------------------------------------------------------------
 -- REMAP
 
+-- | Like functor, but where the the argument isn't just covariant.
 class Remap m where
+    -- | Convert between two values.
     remap :: (a -> b) -- ^ Embed a value
           -> (b -> (a, a -> b)) -- ^ Extract the mode and give a way of re-embedding
           -> m a -> m b
 
+-- | Restricted version of 'remap' where the values are isomorphic.
 remap2 :: Remap m => (a -> b) -> (b -> a) -> m a -> m b
 remap2 f g = remap f (\x -> (g x, f))
 
@@ -204,6 +207,8 @@
 instance Remap Arg where
     remap f g x = x{argValue = remapUpdate f g $ argValue x}
 
+-- | Version of 'remap' for the 'Update' type alias.
+remapUpdate :: (a -> b) -> (b -> (a, a -> b)) -> Update a -> Update b
 remapUpdate f g upd = \s v -> let (a,b) = g v in fmap b $ upd s a
 
 
diff --git a/cmdargs.cabal b/cmdargs.cabal
--- a/cmdargs.cabal
+++ b/cmdargs.cabal
@@ -1,13 +1,13 @@
-cabal-version:      >= 1.6
+cabal-version:      >= 1.18
 build-type:         Simple
 name:               cmdargs
-version:            0.10.14
+version:            0.10.15
 license:            BSD3
 license-file:       LICENSE
 category:           Console
 author:             Neil Mitchell <ndmitchell@gmail.com>
 maintainer:         Neil Mitchell <ndmitchell@gmail.com>
-copyright:          Neil Mitchell 2009-2016
+copyright:          Neil Mitchell 2009-2017
 synopsis:           Command line argument processing
 description:
     This library provides an easy way to define command line parsers. Most users
@@ -33,7 +33,7 @@
 extra-doc-files:
     README.md
     CHANGES.txt
-tested-with:        GHC==8.0.1, GHC==7.10.3, GHC==7.8.4, GHC==7.6.3, GHC==7.4.2
+tested-with:        GHC==8.0.2, GHC==7.10.3, GHC==7.8.4, GHC==7.6.3, GHC==7.4.2
 
 source-repository head
     type:     git
@@ -41,13 +41,16 @@
 
 flag testprog
     default: False
+    manual: True
     description: Build the test program
 
 flag quotation
     default: True
+    manual: True
     description: Build the Quote module
 
 library
+    default-language: Haskell2010
     build-depends:
         base >= 4.4 && < 5,
         filepath,
@@ -58,7 +61,7 @@
         build-depends: template-haskell
         exposed-modules: System.Console.CmdArgs.Quote
         -- See bug #539 for why this magic is required
-        extensions: TemplateHaskell
+        other-extensions: TemplateHaskell
 
     exposed-modules:
         System.Console.CmdArgs
@@ -89,9 +92,10 @@
         System.Console.CmdArgs.Implicit.UI
 
 executable cmdargs
+    default-language: Haskell2010
     main-is: Main.hs
     if flag(quotation)
-        extensions: TemplateHaskell
+        other-extensions: TemplateHaskell
     if flag(testprog) && flag(quotation)
         buildable: True
     else
