diff --git a/.travis.yml b/.travis.yml
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,1 +1,62 @@
-language: haskell
+# NB: don't set `language: haskell` here
+
+# See also https://github.com/hvr/multi-ghc-travis for more information
+env:
+ # we have to use CABALVER=1.16 for GHC<7.6 as well, as there's
+ # no package for earlier cabal versions in the PPA
+ - GHCVER=7.4.2 CABALVER=1.16
+ - GHCVER=7.6.3 CABALVER=1.16
+ - GHCVER=7.8.4 CABALVER=1.18
+ - GHCVER=7.10.1 CABALVER=1.22
+ - GHCVER=head CABALVER=1.22
+
+matrix:
+  allow_failures:
+   - env: GHCVER=head CABALVER=1.22
+
+# Note: the distinction between `before_install` and `install` is not
+#       important.
+before_install:
+ - travis_retry sudo add-apt-repository -y ppa:hvr/ghc
+ - travis_retry sudo apt-get update
+ - travis_retry sudo apt-get install cabal-install-$CABALVER ghc-$GHCVER
+ - export PATH=/opt/ghc/$GHCVER/bin:/opt/cabal/$CABALVER/bin:$PATH
+ - cabal --version
+
+install:
+ - travis_retry cabal update
+ - cabal install --only-dependencies
+ - travis_retry sudo apt-get -q -y install hlint || cabal install hlint
+
+# Here starts the actual work to be performed for the package under
+# test; any command which exits with a non-zero exit code causes the
+# build to fail.
+script:
+ # -v2 provides useful information for debugging
+ - cabal configure -v2
+
+ # this builds all libraries and executables
+ # (including tests/benchmarks)
+ - cabal build
+
+ # tests that a source-distribution can be generated
+ - cabal sdist
+ - hlint src --cpp-define HLINT
+
+ # check that the generated source-distribution can be built & installed
+ - export SRC_TGZ=$(cabal info . | awk '{print $2 ".tar.gz";exit}') ;
+   cd dist/;
+   if [ -f "$SRC_TGZ" ]; then
+      cabal install --force-reinstalls "$SRC_TGZ";
+   else
+      echo "expected '$SRC_TGZ' not found";
+      exit 1;
+   fi
+
+notifications:
+  irc:
+    channels:
+      - "irc.freenode.org#haskell-lens"
+    skip_join: true
+    template:
+      - "\x0313tagged\x03/\x0306%{branch}\x03 \x0314%{commit}\x03 %{build_url} %{message}"
diff --git a/CHANGELOG.markdown b/CHANGELOG.markdown
--- a/CHANGELOG.markdown
+++ b/CHANGELOG.markdown
@@ -1,3 +1,7 @@
+0.8.0.1
+-------
+* Fix builds on GHC 7.4.
+
 0.8
 ---
 * Added `Data.Proxy.TH`, based on the code from `Frames` by Anthony Cowley.
diff --git a/HLint.hs b/HLint.hs
new file mode 100644
--- /dev/null
+++ b/HLint.hs
@@ -0,0 +1,2 @@
+ignore "Use camelCase"
+ignore "Eta reduce"
diff --git a/LICENSE b/LICENSE
--- a/LICENSE
+++ b/LICENSE
@@ -1,4 +1,4 @@
-Copyright (c) 2009-2013 Edward Kmett
+Copyright (c) 2009-2015 Edward Kmett
 All rights reserved.
 
 Redistribution and use in source and binary forms, with or without
diff --git a/src/Data/Proxy/TH.hs b/src/Data/Proxy/TH.hs
--- a/src/Data/Proxy/TH.hs
+++ b/src/Data/Proxy/TH.hs
@@ -1,7 +1,10 @@
 {-# LANGUAGE CPP #-}
+#ifndef MIN_VERSION_template_haskell
+#define MIN_VERSION_template_haskell(x,y,z) 1
+#endif
 module Data.Proxy.TH
   ( pr
-#if __GLASGOW_HASKELL__ >= 704
+#if MIN_VERSION_template_haskell(2,8,0)
   , pr1
 #endif
   ) where
@@ -52,17 +55,17 @@
     [h@(t:_)]
        | isUpper t -> p $ head <$> cons
        | otherwise -> p $ varT $ mkName h
-#if __GLASGOW_HASKELL__ >= 704
+#if MIN_VERSION_template_haskell(2,8,0)
     _ -> p $ mkList <$> cons
 #endif
     where 
       ts = map strip $ splitOn ',' s
       cons = mapM (conT . mkName) ts
-#if __GLASGOW_HASKELL__ >= 704
+#if MIN_VERSION_template_haskell(2,8,0)
       mkList = foldr (AppT . AppT PromotedConsT) PromotedNilT
 #endif
 
-#if __GLASGOW_HASKELL__ >= 704
+#if MIN_VERSION_template_haskell(2,8,0)
 -- | Like 'pr', but takes a single type, which is used to produce a
 -- 'Proxy' for a single-element list containing only that type. This
 -- is useful for passing a single type to a function that wants a list
diff --git a/tagged.cabal b/tagged.cabal
--- a/tagged.cabal
+++ b/tagged.cabal
@@ -1,5 +1,5 @@
 name:           tagged
-version:        0.8
+version:        0.8.0.1
 license:        BSD3
 license-file:   LICENSE
 author:         Edward A. Kmett
@@ -9,11 +9,11 @@
 synopsis:       Haskell 98 phantom types to avoid unsafely passing dummy arguments
 homepage:       http://github.com/ekmett/tagged
 bug-reports:    http://github.com/ekmett/tagged/issues
-copyright:      2009-2013 Edward A. Kmett
+copyright:      2009-2015 Edward A. Kmett
 description:    Haskell 98 phantom types to avoid unsafely passing dummy arguments
 build-type:     Simple
 cabal-version:  >= 1.10
-extra-source-files: .travis.yml CHANGELOG.markdown README.markdown
+extra-source-files: .travis.yml CHANGELOG.markdown README.markdown HLint.hs
 
 source-repository head
   type: git
@@ -36,6 +36,6 @@
     exposed-modules: Data.Proxy
     other-modules: Paths_tagged
 
-  if impl(ghc)
+  if impl(ghc>=7.6)
     exposed-modules: Data.Proxy.TH
-    build-depends: template-haskell >= 2.5 && < 2.11
+    build-depends: template-haskell >= 2.8 && < 2.11
