diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,7 @@
+### 0.3.6 [2017.04.10]
+* Make `deriveTraversable` use `liftA2` in derived implementations of `traverse` when possible, now that `liftA2` is a class method of `Applicative` (as of GHC 8.2)
+* Make `deriveShow` use `showCommaSpace`, a change introduced in GHC 8.2
+
 ### 0.3.5 [2016.12.12]
 * Fix bug in which derived `Ord` instances for datatypes with many constructors
   would fail to typecheck
diff --git a/LICENSE b/LICENSE
--- a/LICENSE
+++ b/LICENSE
@@ -1,4 +1,4 @@
-Copyright (c) 2015-2016, Ryan Scott
+Copyright (c) 2015-2017, Ryan Scott
 
 All rights reserved.
 
diff --git a/deriving-compat.cabal b/deriving-compat.cabal
--- a/deriving-compat.cabal
+++ b/deriving-compat.cabal
@@ -1,5 +1,5 @@
 name:                deriving-compat
-version:             0.3.5
+version:             0.3.6
 synopsis:            Backports of GHC deriving extensions
 description:         Provides Template Haskell functions that mimic deriving
                      extensions that were introduced or modified in recent versions
@@ -54,7 +54,7 @@
 author:              Ryan Scott
 maintainer:          Ryan Scott <ryan.gl.scott@gmail.com>
 stability:           Experimental
-copyright:           (C) 2015-2016 Ryan Scott
+copyright:           (C) 2015-2017 Ryan Scott
 category:            Compatibility
 build-type:          Simple
 extra-source-files:  CHANGELOG.md, README.md
@@ -121,7 +121,7 @@
     build-depends:     base                >= 4.3 && < 4.9
 
   if flag(template-haskell-2-11)
-    build-depends:     template-haskell    >= 2.11 && < 2.12
+    build-depends:     template-haskell    >= 2.11 && < 2.13
                      , ghc-boot-th
   else
     build-depends:     template-haskell    >= 2.5  && < 2.11
@@ -152,11 +152,11 @@
                        Types.ReadShow
   build-depends:       base-compat         >= 0.8.1 && < 1
                      , base-orphans        >= 0.5   && < 1
-                     , deriving-compat     == 0.3.5
+                     , deriving-compat
                      , hspec               >= 1.8
                      , QuickCheck          >= 2     && < 3
                      , tagged              >= 0.7   && < 1
-                     , template-haskell    >= 2.5   && < 2.12
+                     , template-haskell    >= 2.5   && < 2.13
 
   if flag(base-4-9)
     build-depends:     base                >= 4.9 && < 5
diff --git a/src/Data/Bounded/Deriving.hs b/src/Data/Bounded/Deriving.hs
--- a/src/Data/Bounded/Deriving.hs
+++ b/src/Data/Bounded/Deriving.hs
@@ -1,6 +1,6 @@
 {-|
 Module:      Data.Bounded.Deriving
-Copyright:   (C) 2015-2016 Ryan Scott
+Copyright:   (C) 2015-2017 Ryan Scott
 License:     BSD-style (see the file LICENSE)
 Maintainer:  Ryan Scott
 Portability: Template Haskell
diff --git a/src/Data/Bounded/Deriving/Internal.hs b/src/Data/Bounded/Deriving/Internal.hs
--- a/src/Data/Bounded/Deriving/Internal.hs
+++ b/src/Data/Bounded/Deriving/Internal.hs
@@ -2,7 +2,7 @@
 
 {-|
 Module:      Data.Bounded.Deriving.Internal
-Copyright:   (C) 2015-2016 Ryan Scott
+Copyright:   (C) 2015-2017 Ryan Scott
 License:     BSD-style (see the file LICENSE)
 Maintainer:  Ryan Scott
 Portability: Template Haskell
diff --git a/src/Data/Deriving.hs b/src/Data/Deriving.hs
--- a/src/Data/Deriving.hs
+++ b/src/Data/Deriving.hs
@@ -1,6 +1,6 @@
 {-|
 Module:      Data.Deriving
-Copyright:   (C) 2015-2016 Ryan Scott
+Copyright:   (C) 2015-2017 Ryan Scott
 License:     BSD-style (see the file LICENSE)
 Maintainer:  Ryan Scott
 Portability: Template Haskell
@@ -67,6 +67,13 @@
   that are not subject to @RebindableSyntax@. It was also changed so that derived
   @('<=')@, @('>')@, and @('>=')@ methods are expressed through @('<')@, which avoids
   generating a substantial amount of code.
+
+* In GHC 8.2, deriving 'Traversable' was changed so that it uses 'liftA2' to implement
+  'traverse' whenever possible. This was done since 'liftA2' was also made a class
+  method of 'Applicative', so sometimes using 'liftA2' produces more efficient code.
+
+* In GHC 8.2, deriving 'Show' was changed so that it uses an explicit @showCommaSpace@
+  method, instead of repeating the code @showString \", \"@ in several places.
 -}
 
 {- $derive
diff --git a/src/Data/Deriving/Internal.hs b/src/Data/Deriving/Internal.hs
--- a/src/Data/Deriving/Internal.hs
+++ b/src/Data/Deriving/Internal.hs
@@ -13,7 +13,7 @@
 
 {-|
 Module:      Data.Deriving.Internal
-Copyright:   (C) 2015-2016 Ryan Scott
+Copyright:   (C) 2015-2017 Ryan Scott
 License:     BSD-style (see the file LICENSE)
 Maintainer:  Ryan Scott
 Portability: Template Haskell
@@ -2070,6 +2070,9 @@
 apValName :: Name
 apValName = mkNameG_v "base" "GHC.Base" "<*>"
 
+liftA2ValName :: Name
+liftA2ValName = mkNameG_v "base" "GHC.Base" "liftA2"
+
 mappendValName :: Name
 mappendValName = mkNameG_v "base" "GHC.Base" "mappend"
 
@@ -2082,6 +2085,9 @@
 apValName :: Name
 apValName = mkNameG_v "base" "Control.Applicative" "<*>"
 
+liftA2ValName :: Name
+liftA2ValName = mkNameG_v "base" "Control.Applicative" "liftA2"
+
 mappendValName :: Name
 mappendValName = mkNameG_v "base" "Data.Monoid" "mappend"
 
@@ -2292,4 +2298,15 @@
 unApplyValName :: Name
 unApplyValName = mkNameG_v derivingCompatPackageKey "Data.Deriving.Internal" "unApply"
 # endif
+#endif
+
+#if MIN_VERSION_base(4,10,0)
+showCommaSpaceValName :: Name
+showCommaSpaceValName = mkNameG_v "base" "GHC.Show" "showCommaSpace"
+#else
+showCommaSpace :: ShowS
+showCommaSpace = showString ", "
+
+showCommaSpaceValName :: Name
+showCommaSpaceValName = mkNameG_v derivingCompatPackageKey "Data.Deriving.Internal" "showCommaSpace"
 #endif
diff --git a/src/Data/Enum/Deriving.hs b/src/Data/Enum/Deriving.hs
--- a/src/Data/Enum/Deriving.hs
+++ b/src/Data/Enum/Deriving.hs
@@ -1,6 +1,6 @@
 {-|
 Module:      Data.Enum.Deriving
-Copyright:   (C) 2015-2016 Ryan Scott
+Copyright:   (C) 2015-2017 Ryan Scott
 License:     BSD-style (see the file LICENSE)
 Maintainer:  Ryan Scott
 Portability: Template Haskell
diff --git a/src/Data/Enum/Deriving/Internal.hs b/src/Data/Enum/Deriving/Internal.hs
--- a/src/Data/Enum/Deriving/Internal.hs
+++ b/src/Data/Enum/Deriving/Internal.hs
@@ -1,6 +1,6 @@
 {-|
 Module:      Data.Enum.Deriving.Internal
-Copyright:   (C) 2015-2016 Ryan Scott
+Copyright:   (C) 2015-2017 Ryan Scott
 License:     BSD-style (see the file LICENSE)
 Maintainer:  Ryan Scott
 Portability: Template Haskell
diff --git a/src/Data/Eq/Deriving.hs b/src/Data/Eq/Deriving.hs
--- a/src/Data/Eq/Deriving.hs
+++ b/src/Data/Eq/Deriving.hs
@@ -1,7 +1,7 @@
 {-# LANGUAGE CPP #-}
 {-|
 Module:      Data.Eq.Deriving
-Copyright:   (C) 2015-2016 Ryan Scott
+Copyright:   (C) 2015-2017 Ryan Scott
 License:     BSD-style (see the file LICENSE)
 Maintainer:  Ryan Scott
 Portability: Template Haskell
diff --git a/src/Data/Eq/Deriving/Internal.hs b/src/Data/Eq/Deriving/Internal.hs
--- a/src/Data/Eq/Deriving/Internal.hs
+++ b/src/Data/Eq/Deriving/Internal.hs
@@ -3,7 +3,7 @@
 
 {-|
 Module:      Data.Eq.Deriving.Internal
-Copyright:   (C) 2015-2016 Ryan Scott
+Copyright:   (C) 2015-2017 Ryan Scott
 License:     BSD-style (see the file LICENSE)
 Maintainer:  Ryan Scott
 Portability: Template Haskell
diff --git a/src/Data/Foldable/Deriving.hs b/src/Data/Foldable/Deriving.hs
--- a/src/Data/Foldable/Deriving.hs
+++ b/src/Data/Foldable/Deriving.hs
@@ -1,6 +1,6 @@
 {-|
 Module:      Data.Foldable.Deriving
-Copyright:   (C) 2015-2016 Ryan Scott
+Copyright:   (C) 2015-2017 Ryan Scott
 License:     BSD-style (see the file LICENSE)
 Maintainer:  Ryan Scott
 Portability: Template Haskell
diff --git a/src/Data/Functor/Deriving.hs b/src/Data/Functor/Deriving.hs
--- a/src/Data/Functor/Deriving.hs
+++ b/src/Data/Functor/Deriving.hs
@@ -1,6 +1,6 @@
 {-|
 Module:      Data.Functor.Deriving
-Copyright:   (C) 2015-2016 Ryan Scott
+Copyright:   (C) 2015-2017 Ryan Scott
 License:     BSD-style (see the file LICENSE)
 Maintainer:  Ryan Scott
 Portability: Template Haskell
diff --git a/src/Data/Functor/Deriving/Internal.hs b/src/Data/Functor/Deriving/Internal.hs
--- a/src/Data/Functor/Deriving/Internal.hs
+++ b/src/Data/Functor/Deriving/Internal.hs
@@ -2,7 +2,7 @@
 {-# LANGUAGE GADTs #-}
 {-|
 Module:      Data.Functor.Deriving.Internal
-Copyright:   (C) 2015-2016 Ryan Scott
+Copyright:   (C) 2015-2017 Ryan Scott
 License:     BSD-style (see the file LICENSE)
 Maintainer:  Ryan Scott
 Portability: Template Haskell
@@ -470,7 +470,8 @@
 
     let go :: [Exp] -> Exp
         go []     = VarE pureValName `AppE` conExp
-        go (e:es) = foldl' (\e1 e2 -> InfixE (Just e1) (VarE apValName) (Just e2))
-          (VarE fmapValName `AppE` conExp `AppE` e) es
+        go [e] = VarE fmapValName `AppE` conExp `AppE` e
+        go (e1:e2:es) = foldl' (\se1 se2 -> InfixE (Just se1) (VarE apValName) (Just se2))
+          (VarE liftA2ValName `AppE` conExp `AppE` e1 `AppE` e2) es
 
     return . go . rights $ ess
diff --git a/src/Data/Ix/Deriving.hs b/src/Data/Ix/Deriving.hs
--- a/src/Data/Ix/Deriving.hs
+++ b/src/Data/Ix/Deriving.hs
@@ -1,6 +1,6 @@
 {-|
 Module:      Data.Ix.Deriving
-Copyright:   (C) 2015-2016 Ryan Scott
+Copyright:   (C) 2015-2017 Ryan Scott
 License:     BSD-style (see the file LICENSE)
 Maintainer:  Ryan Scott
 Portability: Template Haskell
diff --git a/src/Data/Ix/Deriving/Internal.hs b/src/Data/Ix/Deriving/Internal.hs
--- a/src/Data/Ix/Deriving/Internal.hs
+++ b/src/Data/Ix/Deriving/Internal.hs
@@ -1,6 +1,6 @@
 {-|
 Module:      Data.Ix.Deriving.Internal
-Copyright:   (C) 2015-2016 Ryan Scott
+Copyright:   (C) 2015-2017 Ryan Scott
 License:     BSD-style (see the file LICENSE)
 Maintainer:  Ryan Scott
 Portability: Template Haskell
diff --git a/src/Data/Ord/Deriving.hs b/src/Data/Ord/Deriving.hs
--- a/src/Data/Ord/Deriving.hs
+++ b/src/Data/Ord/Deriving.hs
@@ -1,7 +1,7 @@
 {-# LANGUAGE CPP #-}
 {-|
 Module:      Data.Ord.Deriving
-Copyright:   (C) 2015-2016 Ryan Scott
+Copyright:   (C) 2015-2017 Ryan Scott
 License:     BSD-style (see the file LICENSE)
 Maintainer:  Ryan Scott
 Portability: Template Haskell
diff --git a/src/Data/Ord/Deriving/Internal.hs b/src/Data/Ord/Deriving/Internal.hs
--- a/src/Data/Ord/Deriving/Internal.hs
+++ b/src/Data/Ord/Deriving/Internal.hs
@@ -3,7 +3,7 @@
 
 {-|
 Module:      Data.Ord.Deriving.Internal
-Copyright:   (C) 2015-2016 Ryan Scott
+Copyright:   (C) 2015-2017 Ryan Scott
 License:     BSD-style (see the file LICENSE)
 Maintainer:  Ryan Scott
 Portability: Template Haskell
diff --git a/src/Data/Traversable/Deriving.hs b/src/Data/Traversable/Deriving.hs
--- a/src/Data/Traversable/Deriving.hs
+++ b/src/Data/Traversable/Deriving.hs
@@ -1,6 +1,6 @@
 {-|
 Module:      Data.Traversable.Deriving
-Copyright:   (C) 2015-2016 Ryan Scott
+Copyright:   (C) 2015-2017 Ryan Scott
 License:     BSD-style (see the file LICENSE)
 Maintainer:  Ryan Scott
 Portability: Template Haskell
diff --git a/src/Text/Read/Deriving.hs b/src/Text/Read/Deriving.hs
--- a/src/Text/Read/Deriving.hs
+++ b/src/Text/Read/Deriving.hs
@@ -1,7 +1,7 @@
 {-# LANGUAGE CPP #-}
 {-|
 Module:      Text.Read.Deriving
-Copyright:   (C) 2015-2016 Ryan Scott
+Copyright:   (C) 2015-2017 Ryan Scott
 License:     BSD-style (see the file LICENSE)
 Maintainer:  Ryan Scott
 Portability: Template Haskell
diff --git a/src/Text/Read/Deriving/Internal.hs b/src/Text/Read/Deriving/Internal.hs
--- a/src/Text/Read/Deriving/Internal.hs
+++ b/src/Text/Read/Deriving/Internal.hs
@@ -2,7 +2,7 @@
 {-# LANGUAGE GADTs #-}
 {-|
 Module:      Text.Read.Deriving
-Copyright:   (C) 2015-2016 Ryan Scott
+Copyright:   (C) 2015-2017 Ryan Scott
 License:     BSD-style (see the file LICENSE)
 Maintainer:  Ryan Scott
 Portability: Template Haskell
diff --git a/src/Text/Show/Deriving.hs b/src/Text/Show/Deriving.hs
--- a/src/Text/Show/Deriving.hs
+++ b/src/Text/Show/Deriving.hs
@@ -1,7 +1,7 @@
 {-# LANGUAGE CPP #-}
 {-|
 Module:      Text.Show.Deriving
-Copyright:   (C) 2015-2016 Ryan Scott
+Copyright:   (C) 2015-2017 Ryan Scott
 License:     BSD-style (see the file LICENSE)
 Maintainer:  Ryan Scott
 Portability: Template Haskell
diff --git a/src/Text/Show/Deriving/Internal.hs b/src/Text/Show/Deriving/Internal.hs
--- a/src/Text/Show/Deriving/Internal.hs
+++ b/src/Text/Show/Deriving/Internal.hs
@@ -2,7 +2,7 @@
 {-# LANGUAGE GADTs #-}
 {-|
 Module:      Text.Show.Deriving.Internal
-Copyright:   (C) 2015-2016 Ryan Scott
+Copyright:   (C) 2015-2017 Ryan Scott
 License:     BSD-style (see the file LICENSE)
 Maintainer:  Ryan Scott
 Portability: Template Haskell
@@ -394,7 +394,7 @@
                                                                      (showString argNameBase) ""
                                          in [ varE showStringValName `appE` stringE (infixRec ++ " = ")
                                             , makeShowForArg 0 sClass opts conName tvMap argTy arg
-                                            , varE showStringValName `appE` stringE ", "
+                                            , varE showCommaSpaceValName
                                             ]
                                    )
                                    (zip3 ts argTys args)
diff --git a/tests/BoundedEnumIxSpec.hs b/tests/BoundedEnumIxSpec.hs
--- a/tests/BoundedEnumIxSpec.hs
+++ b/tests/BoundedEnumIxSpec.hs
@@ -12,7 +12,7 @@
 
 {-|
 Module:      BoundedEnumSpec
-Copyright:   (C) 2015-2016 Ryan Scott
+Copyright:   (C) 2015-2017 Ryan Scott
 License:     BSD-style (see the file LICENSE)
 Maintainer:  Ryan Scott
 Portability: Template Haskell
diff --git a/tests/EqSpec.hs b/tests/EqSpec.hs
--- a/tests/EqSpec.hs
+++ b/tests/EqSpec.hs
@@ -1,6 +1,6 @@
 {-|
 Module:      EqSpec
-Copyright:   (C) 2015-2016 Ryan Scott
+Copyright:   (C) 2015-2017 Ryan Scott
 License:     BSD-style (see the file LICENSE)
 Maintainer:  Ryan Scott
 Portability: Template Haskell
diff --git a/tests/FunctorSpec.hs b/tests/FunctorSpec.hs
--- a/tests/FunctorSpec.hs
+++ b/tests/FunctorSpec.hs
@@ -17,7 +17,7 @@
 
 {-|
 Module:      FunctorSpec
-Copyright:   (C) 2015-2016 Ryan Scott
+Copyright:   (C) 2015-2017 Ryan Scott
 License:     BSD-style (see the file LICENSE)
 Maintainer:  Ryan Scott
 Portability: Template Haskell
diff --git a/tests/GH6Spec.hs b/tests/GH6Spec.hs
--- a/tests/GH6Spec.hs
+++ b/tests/GH6Spec.hs
@@ -2,7 +2,7 @@
 
 {-|
 Module:      GH6Spec
-Copyright:   (C) 2015-2016 Ryan Scott
+Copyright:   (C) 2015-2017 Ryan Scott
 License:     BSD-style (see the file LICENSE)
 Maintainer:  Ryan Scott
 Portability: Template Haskell
diff --git a/tests/OrdSpec.hs b/tests/OrdSpec.hs
--- a/tests/OrdSpec.hs
+++ b/tests/OrdSpec.hs
@@ -2,7 +2,7 @@
 
 {-|
 Module:      OrdSpec
-Copyright:   (C) 2015-2016 Ryan Scott
+Copyright:   (C) 2015-2017 Ryan Scott
 License:     BSD-style (see the file LICENSE)
 Maintainer:  Ryan Scott
 Portability: Template Haskell
diff --git a/tests/ReadSpec.hs b/tests/ReadSpec.hs
--- a/tests/ReadSpec.hs
+++ b/tests/ReadSpec.hs
@@ -6,7 +6,7 @@
 
 {-|
 Module:      ReadSpec
-Copyright:   (C) 2015-2016 Ryan Scott
+Copyright:   (C) 2015-2017 Ryan Scott
 License:     BSD-style (see the file LICENSE)
 Maintainer:  Ryan Scott
 Portability: Template Haskell
diff --git a/tests/ShowSpec.hs b/tests/ShowSpec.hs
--- a/tests/ShowSpec.hs
+++ b/tests/ShowSpec.hs
@@ -8,7 +8,7 @@
 
 {-|
 Module:      ShowSpec
-Copyright:   (C) 2015-2016 Ryan Scott
+Copyright:   (C) 2015-2017 Ryan Scott
 License:     BSD-style (see the file LICENSE)
 Maintainer:  Ryan Scott
 Portability: Template Haskell
diff --git a/tests/Types/EqOrd.hs b/tests/Types/EqOrd.hs
--- a/tests/Types/EqOrd.hs
+++ b/tests/Types/EqOrd.hs
@@ -8,7 +8,7 @@
 
 {-|
 Module:      Types.EqOrd
-Copyright:   (C) 2015-2016 Ryan Scott
+Copyright:   (C) 2015-2017 Ryan Scott
 License:     BSD-style (see the file LICENSE)
 Maintainer:  Ryan Scott
 Portability: Template Haskell
diff --git a/tests/Types/ReadShow.hs b/tests/Types/ReadShow.hs
--- a/tests/Types/ReadShow.hs
+++ b/tests/Types/ReadShow.hs
@@ -8,7 +8,7 @@
 
 {-|
 Module:      Types.ReadShow
-Copyright:   (C) 2015-2016 Ryan Scott
+Copyright:   (C) 2015-2017 Ryan Scott
 License:     BSD-style (see the file LICENSE)
 Maintainer:  Ryan Scott
 Portability: Template Haskell
