diff --git a/CHANGELOG b/CHANGELOG
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,5 +1,10 @@
 CHANGELOG
 
+2.0.3.1
+
+  - Allow HUnit 1.4.*.
+  - Fix test suite on GHC 7.4.
+
 2.0.3
 
   - Support GHC 8.
diff --git a/fclabels.cabal b/fclabels.cabal
--- a/fclabels.cabal
+++ b/fclabels.cabal
@@ -1,5 +1,5 @@
 Name:          fclabels
-Version:       2.0.3
+Version:       2.0.3.1
 Author:        Sebastiaan Visser, Erik Hesselink, Chris Eidhof, Sjoerd Visscher
                with lots of help and feedback from others.
 Synopsis:      First class accessor labels implemented as lenses.
@@ -49,7 +49,8 @@
                .
                * /Changelog from 2.0.2.4 to 2.0.3/
                .
-               >   - Support GHC 8.
+               >   - Allow HUnit 1.4.*.
+               >   - Fix test suite on GHC 7.4.
 
 Maintainer:         Sebastiaan Visser <code@fvisser.nl>
 Homepage:           https://github.com/sebastiaanvisser/fclabels
@@ -60,6 +61,7 @@
 Cabal-Version:      >= 1.8
 Build-Type:         Simple
 Tested-With:
+  GHC==7.4.2,
   GHC==7.6.3,
   GHC==7.8.4,
   GHC==7.10.3,
@@ -85,7 +87,7 @@
 
   GHC-Options: -Wall
   Build-Depends:
-      base             >= 4.6 && < 4.10
+      base             >= 4.5 && < 4.10
     , template-haskell >= 2.2 && < 2.12
     , mtl              >= 1.0 && < 2.3
     , transformers     >= 0.2 && < 0.6
@@ -105,7 +107,7 @@
     , template-haskell >= 2.2 && < 2.12
     , mtl              >= 1.0 && < 2.3
     , transformers     >= 0.2 && < 0.6
-    , HUnit            >= 1.2 && < 1.4
+    , HUnit            >= 1.2 && < 1.5
 
 Benchmark benchmark
   Type:            exitcode-stdio-1.0
diff --git a/test/TestSuite.hs b/test/TestSuite.hs
--- a/test/TestSuite.hs
+++ b/test/TestSuite.hs
@@ -8,6 +8,7 @@
   , TypeOperators
   , RankNTypes
   , FlexibleContexts
+  , StandaloneDeriving
   , CPP #-}
 
 -- Needed for the Either String orphan instances.
@@ -52,9 +53,12 @@
 
 fclabels [d|
   newtype Newtype a = Newtype { unNewtype :: [a] }
-    deriving (Eq, Ord, Show)
   |]
 
+deriving instance Eq   a => Eq   (Newtype a)
+deriving instance Ord  a => Ord  (Newtype a)
+deriving instance Show a => Show (Newtype a)
+
 newtypeL :: ArrowApply cat => Poly.Lens cat (Newtype a -> Newtype b) ([a] -> [b])
 newtypeL = unNewtype
 
@@ -217,10 +221,12 @@
     | Con2 { field1 :: Bool
            , field3 :: [a]
            }
-    deriving (Eq, Show)
 
   |]
 
+deriving instance Eq   a => Eq   (View2 a)
+deriving instance Show a => Show (View2 a)
+
 view :: View2 a :~> Either (Bool, (a, a)) (Bool, [a])
 view = point $
       Left  <$> L.left  >- con1
@@ -327,7 +333,7 @@
   [ eq "get fA" (Total.get fA record0) 0
   , eq "set fA" (Total.set fA 1 record0) record1
   , eq "mod fA" (Total.modify fA (+ 1) record0) record1
-  , eq "get manual_fA" (Total.get manual_fA record0) 0 
+  , eq "get manual_fA" (Total.get manual_fA record0) 0
   , eq "set manual_fA" (Total.set manual_fA 1 record0) record1
   , eq "mod manual_fA" (Total.modify manual_fA (+ 1) record0) record1
   , eq "get mB" (Total.get mB first0) 0
@@ -565,4 +571,3 @@
 
 equality :: (Eq a, Show a) => String -> a -> a -> Test
 equality d a b = TestCase (assertEqual d b a)
-
