diff --git a/CHANGES.md b/CHANGES.md
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -1,6 +1,11 @@
 Release notes for `units`
 =========================
 
+Version 2.4.1
+-------------
+* Add `Units` superclass to `UnitFactor`, easing type inference in
+GHC 8.0, thanks to @rimmington.
+
 Version 2.4
 -----------
 * New interface with the `linear` package in `Data.Metrology.Linear`.
diff --git a/Data/Metrology.hs b/Data/Metrology.hs
--- a/Data/Metrology.hs
+++ b/Data/Metrology.hs
@@ -2,7 +2,7 @@
 
    The units Package
    Copyright (c) 2014 Richard Eisenberg
-   eir@cis.upenn.edu
+   rae@cs.brynmawr.edu
 
    This file gathers and exports all user-visible pieces of the units package.
    It also defines the main creators and consumers of dimensioned objects.
@@ -26,7 +26,7 @@
 -- Module      :  Data.Metrology
 -- Copyright   :  (C) 2014 Richard Eisenberg
 -- License     :  BSD-style (see LICENSE)
--- Maintainer  :  Richard Eisenberg (eir@cis.upenn.edu)
+-- Maintainer  :  Richard Eisenberg (rae@cs.brynmawr.edu)
 -- Stability   :  experimental
 -- Portability :  non-portable
 --
@@ -37,7 +37,7 @@
 --
 -- Some of the types below refer to declarations that are not exported and
 -- not documented here. This is because Haddock does not allow finely-tuned
--- abstraction in documentation. (In particular, right-hand sides of type 
+-- abstraction in documentation. (In particular, right-hand sides of type
 -- synonym declarations are always included.) If a symbol is not exported,
 -- you do /not/ need to know anything about it to use this package.
 --
@@ -74,7 +74,7 @@
 --
 --   or
 --
---   > inMeters x = x # Meter   
+--   > inMeters x = x # Meter
 numIn :: ( ValidDLU dim DefaultLCSU unit
          , Fractional n )
       => Qu dim DefaultLCSU n -> unit -> n
diff --git a/Data/Metrology/Combinators.hs b/Data/Metrology/Combinators.hs
--- a/Data/Metrology/Combinators.hs
+++ b/Data/Metrology/Combinators.hs
@@ -2,7 +2,7 @@
 
    The units Package
    Copyright (c) 2013 Richard Eisenberg
-   eir@cis.upenn.edu
+   rae@cs.brynmawr.edu
 
    This file defines combinators to build more complex units and dimensions from simpler ones.
 -}
diff --git a/Data/Metrology/Dimensions.hs b/Data/Metrology/Dimensions.hs
--- a/Data/Metrology/Dimensions.hs
+++ b/Data/Metrology/Dimensions.hs
@@ -2,7 +2,7 @@
 
    The units Package
    Copyright (c) 2013 Richard Eisenberg
-   eir@cis.upenn.edu
+   rae@cs.brynmawr.edu
 
    This file defines the class Dimension, which is needed for
    defining dimensions.
@@ -24,4 +24,3 @@
   -- the default of this type family should not be necessary in user code.
   type DimFactorsOf dim :: [Factor *]
   type DimFactorsOf dim = '[F dim One]
-  
diff --git a/Data/Metrology/Factor.hs b/Data/Metrology/Factor.hs
--- a/Data/Metrology/Factor.hs
+++ b/Data/Metrology/Factor.hs
@@ -2,7 +2,7 @@
 
    The units Package
    Copyright (c) 2013 Richard Eisenberg
-   eir@cis.upenn.edu
+   rae@cs.brynmawr.edu
 
    This file defines the Factor kind and operations over lists of Factors.
 
@@ -15,7 +15,7 @@
 
 import GHC.Exts (Constraint)
 import Data.Metrology.Z as Z
-import Data.Type.Equality
+import Data.Type.Equality as DTE
 import Data.Type.Bool
 
 import Data.Singletons.Prelude
@@ -55,7 +55,7 @@
 infix 4 $=
 -- | Do these Factors represent the same dimension?
 type family (a :: Factor *) $= (b :: Factor *) :: Bool where
-  (F n1 z1) $= (F n2 z2) = n1 == n2
+  (F n1 z1) $= (F n2 z2) = n1 DTE.== n2
   a         $= b         = False
 
 -- | @(Extract s lst)@ pulls the Factor that matches s out of lst, returning a
diff --git a/Data/Metrology/Internal.hs b/Data/Metrology/Internal.hs
--- a/Data/Metrology/Internal.hs
+++ b/Data/Metrology/Internal.hs
@@ -2,7 +2,7 @@
 
    The units Package
    Copyright (c) 2013 Richard Eisenberg
-   eir@cis.upenn.edu
+   rae@cs.brynmawr.edu
 
    This file gathers and exports user-visible type-level definitions, to
    make error messages less cluttered. Non-expert users should never have
@@ -14,7 +14,7 @@
 -- Module      :  Data.Metrology.Internal
 -- Copyright   :  (C) 2013 Richard Eisenberg
 -- License     :  BSD-style (see LICENSE)
--- Maintainer  :  Richard Eisenberg (eir@cis.upenn.edu)
+-- Maintainer  :  Richard Eisenberg (rae@cs.brynmawr.edu)
 -- Stability   :  experimental
 -- Portability :  non-portable
 --
@@ -54,5 +54,3 @@
 import Data.Metrology.Factor
 import Data.Metrology.Set
 import Data.Metrology.Dimensions
-
-  
diff --git a/Data/Metrology/LCSU.hs b/Data/Metrology/LCSU.hs
--- a/Data/Metrology/LCSU.hs
+++ b/Data/Metrology/LCSU.hs
@@ -2,11 +2,11 @@
 
    The units Package
    Copyright (c) 2013 Richard Eisenberg
-   eir@cis.upenn.edu
+   rae@cs.brynmawr.edu
 
    Defines a locally coherent system of units (LCSUs),
    implemented as an association list.
-   An LCSU is a from base dimensions to units, thus 
+   An LCSU is a from base dimensions to units, thus
    defining a uniquely mapping units for any dimensions.
 -}
 
diff --git a/Data/Metrology/Linear.hs b/Data/Metrology/Linear.hs
--- a/Data/Metrology/Linear.hs
+++ b/Data/Metrology/Linear.hs
@@ -11,7 +11,7 @@
 -- Module      :  Data.Metrology.Linear
 -- Copyright   :  (C) 2014 Richard Eisenberg, (C) 2015 Tobias Markus
 -- License     :  BSD-style (see LICENSE)
--- Maintainer  :  Richard Eisenberg (eir@cis.upenn.edu)
+-- Maintainer  :  Richard Eisenberg (rae@cs.brynmawr.edu)
 -- Stability   :  experimental
 -- Portability :  non-portable
 --
diff --git a/Data/Metrology/Parser.hs b/Data/Metrology/Parser.hs
--- a/Data/Metrology/Parser.hs
+++ b/Data/Metrology/Parser.hs
@@ -3,7 +3,7 @@
 -- Module      :  Data.Metrology.Parser
 -- Copyright   :  (C) 2014 Richard Eisenberg
 -- License     :  BSD-style (see LICENSE)
--- Maintainer  :  Richard Eisenberg (eir@cis.upenn.edu)
+-- Maintainer  :  Richard Eisenberg (rae@cs.brynmawr.edu)
 -- Stability   :  experimental
 -- Portability :  non-portable
 --
diff --git a/Data/Metrology/Poly.hs b/Data/Metrology/Poly.hs
--- a/Data/Metrology/Poly.hs
+++ b/Data/Metrology/Poly.hs
@@ -2,7 +2,7 @@
 
    The units Package
    Copyright (c) 2013 Richard Eisenberg
-   eir@cis.upenn.edu
+   rae@cs.brynmawr.edu
 
    This file gathers and exports all user-visible pieces of the units package.
    It also defines the main creators and consumers of dimensioned objects.
@@ -21,7 +21,7 @@
 -- Module      :  Data.Metrology.Poly
 -- Copyright   :  (C) 2013 Richard Eisenberg
 -- License     :  BSD-style (see LICENSE)
--- Maintainer  :  Richard Eisenberg (eir@cis.upenn.edu)
+-- Maintainer  :  Richard Eisenberg (rae@cs.brynmawr.edu)
 -- Stability   :  experimental
 -- Portability :  non-portable
 --
diff --git a/Data/Metrology/Qu.hs b/Data/Metrology/Qu.hs
--- a/Data/Metrology/Qu.hs
+++ b/Data/Metrology/Qu.hs
@@ -2,7 +2,7 @@
 
    The units Package
    Copyright (c) 2013 Richard Eisenberg
-   eir@cis.upenn.edu
+   rae@cs.brynmawr.edu
 
    This file defines the 'Qu' type that represents quantity
    (a number paired with its measurement reference).
diff --git a/Data/Metrology/Quantity.hs b/Data/Metrology/Quantity.hs
--- a/Data/Metrology/Quantity.hs
+++ b/Data/Metrology/Quantity.hs
@@ -3,7 +3,7 @@
 -- Module      :  Data.Metrology.Quantity
 -- Copyright   :  (C) 2014 Richard Eisenberg
 -- License     :  BSD-style (see LICENSE)
--- Maintainer  :  Richard Eisenberg (eir@cis.upenn.edu)
+-- Maintainer  :  Richard Eisenberg (rae@cs.brynmawr.edu)
 -- Stability   :  experimental
 -- Portability :  non-portable
 --
diff --git a/Data/Metrology/Set.hs b/Data/Metrology/Set.hs
--- a/Data/Metrology/Set.hs
+++ b/Data/Metrology/Set.hs
@@ -2,7 +2,7 @@
 
    The units Package
    Copyright (c) 2013 Richard Eisenberg
-   eir@cis.upenn.edu
+   rae@cs.brynmawr.edu
 
    Defines set-like operations on type-level lists.
 -}
@@ -12,7 +12,7 @@
 -- Module      :  Data.Metrology.Set
 -- Copyright   :  (C) 2013 Richard Eisenberg
 -- License     :  BSD-style (see LICENSE)
--- Maintainer  :  Richard Eisenberg (eir@cis.upenn.edu)
+-- Maintainer  :  Richard Eisenberg (rae@cs.brynmawr.edu)
 -- Stability   :  experimental
 -- Portability :  non-portable
 --
diff --git a/Data/Metrology/Show.hs b/Data/Metrology/Show.hs
--- a/Data/Metrology/Show.hs
+++ b/Data/Metrology/Show.hs
@@ -12,7 +12,7 @@
 -- Module      :  Data.Metrology.Show
 -- Copyright   :  (C) 2013 Richard Eisenberg
 -- License     :  BSD-style (see LICENSE)
--- Maintainer  :  Richard Eisenberg (eir@cis.upenn.edu)
+-- Maintainer  :  Richard Eisenberg (rae@cs.brynmawr.edu)
 -- Stability   :  experimental
 -- Portability :  non-portable
 --
diff --git a/Data/Metrology/TH.hs b/Data/Metrology/TH.hs
--- a/Data/Metrology/TH.hs
+++ b/Data/Metrology/TH.hs
@@ -3,7 +3,7 @@
 -- Module      :  Data.Metrology.TH
 -- Copyright   :  (C) 2014 Richard Eisenberg
 -- License     :  BSD-style (see LICENSE)
--- Maintainer  :  Richard Eisenberg (eir@cis.upenn.edu)
+-- Maintainer  :  Richard Eisenberg (rae@cs.brynmawr.edu)
 -- Stability   :  experimental
 -- Portability :  non-portable
 --
@@ -78,7 +78,7 @@
 -- > instance Dimension Length
 declareDimension :: String -> Q [Dec]
 declareDimension str =
-  return [ mkDataD [] name [] [NormalC name []] []
+  return [ mkEmptyDataD name
 #if __GLASGOW_HASKELL__ >= 711
          , InstanceD Nothing [] (ConT ''Dimension `AppT` ConT name) []
 #else
@@ -109,7 +109,7 @@
   unit_instance <- [d| instance Unit $unit_type where
                          type BaseUnit $unit_type = Canonical
                          type DimOfUnit $unit_type = $dim |]
-  return $ (mkDataD [] unit_name [] [NormalC unit_name []] [])
+  return $ (mkEmptyDataD unit_name)
            : unit_instance ++ show_instance
   where
     unit_name = mkName unit_name_str
@@ -132,7 +132,7 @@
   unit_instance <- [d| instance Unit $unit_type where
                          type BaseUnit $unit_type = $base_unit
                          conversionRatio _ = ratio |]
-  return $ (mkDataD [] unit_name [] [NormalC unit_name []] [])
+  return $ (mkEmptyDataD unit_name)
            : unit_instance ++ show_instance
   where
     unit_name = mkName unit_name_str
@@ -172,7 +172,7 @@
                          type BaseUnit $unit_type = Canonical
                          type DimOfUnit $unit_type = $unit_type |]
   default_instance <- [d| type instance DefaultUnitOfDim $unit_type = $unit_type |]
-  return $ (mkDataD [] unit_name [] [NormalC unit_name []] [])
+  return $ (mkEmptyDataD unit_name)
            : show_instance ++ dim_instance ++ unit_instance ++ default_instance
   where
     unit_name = mkName unit_name_str
@@ -216,10 +216,15 @@
     mkClassP n tys = foldl AppT (ConT n) tys
 #endif
 
--- Local function that provides compatibility across TH versions
-mkDataD :: Cxt -> Name -> [TyVarBndr] -> [Con] -> [Name] -> Dec
-#if __GLASGOW_HASKELL__ >= 711
-mkDataD ct name tvbs cons derivs = DataD ct name tvbs Nothing cons (map ConT derivs)
+-- Make a DataD like `data <name> = <name>`.
+mkEmptyDataD :: Name -> Dec
+mkEmptyDataD name
+#if __GLASGOW_HASKELL__ >= 801
+  = DataD [] name [] Nothing [con] []
+#elif __GLASGOW_HASKELL__ >= 711
+  = DataD [] name [] Nothing [con] []
 #else
-mkDataD = DataD
+  = DataD [] name [] [con] []
 #endif
+  where
+    con = NormalC name []
diff --git a/Data/Metrology/Units.hs b/Data/Metrology/Units.hs
--- a/Data/Metrology/Units.hs
+++ b/Data/Metrology/Units.hs
@@ -2,7 +2,7 @@
 
    The units Package
    Copyright (c) 2013 Richard Eisenberg
-   eir@cis.upenn.edu
+   rae@cs.brynmawr.edu
 
    This file defines the class Unit, which is needed for
    user-defined units.
@@ -132,9 +132,13 @@
 -- Conversion ratios for lists of units
 -----------------------------------------------------------------------
 
+type family Units (dfactors :: [Factor *]) :: Constraint where
+  Units '[]                    = ()
+  Units (F unit z ': dfactors) = (Unit unit, Units dfactors)
+
 -- | Classifies well-formed list of unit factors, and permits calculating a
 -- conversion ratio for the purposes of LCSU conversions.
-class UnitFactor (units :: [Factor *]) where
+class (Units units) => UnitFactor (units :: [Factor *]) where
   canonicalConvRatioSpec :: Proxy units -> Rational
 
 instance UnitFactor '[] where
diff --git a/Data/Metrology/Unsafe.hs b/Data/Metrology/Unsafe.hs
--- a/Data/Metrology/Unsafe.hs
+++ b/Data/Metrology/Unsafe.hs
@@ -5,12 +5,12 @@
 -- Module      :  Data.Metrology.Unsafe
 -- Copyright   :  (C) 2013 Richard Eisenberg
 -- License     :  BSD-style (see LICENSE)
--- Maintainer  :  Richard Eisenberg (eir@cis.upenn.edu)
+-- Maintainer  :  Richard Eisenberg (rae@cs.brynmawr.edu)
 -- Stability   :  experimental
 -- Portability :  non-portable
 --
 -- This module exports the constructor of the 'Qu' type. This allows you
--- to write code that takes creates and reads quantities at will, 
+-- to write code that takes creates and reads quantities at will,
 -- which may lead to dimension unsafety. Use at your peril.
 --
 -- This module also exports 'UnsafeQu', which is a simple wrapper around
diff --git a/Data/Metrology/Validity.hs b/Data/Metrology/Validity.hs
--- a/Data/Metrology/Validity.hs
+++ b/Data/Metrology/Validity.hs
@@ -2,7 +2,7 @@
 
    The units Package
    Copyright (c) 2013 Richard Eisenberg
-   eir@cis.upenn.edu
+   rae@cs.brynmawr.edu
 
    This file defines validity checks on dimension, unit, and LCSU definitions.
 -}
@@ -38,10 +38,6 @@
 type family UnitOfDimFactors (dims :: [Factor *]) (lcsu :: LCSU *) :: * where
   UnitOfDimFactors dims lcsu = MultUnitFactors (LookupList dims lcsu)
 
-type family Units (dfactors :: [Factor *]) :: Constraint where
-  Units '[]                    = ()
-  Units (F unit z ': dfactors) = (Unit unit, Units dfactors)
-
 ------------------------------------------------
 -- Main validity functions
 ------------------------------------------------
@@ -51,7 +47,6 @@
   ValidDLU dfactors lcsu unit =
     ( dfactors ~ DimFactorsOf (DimOfUnit unit)
     , UnitFactor (LookupList dfactors lcsu)
-    , Units (LookupList dfactors lcsu)  -- needed only in GHC 8
     , Unit unit
     , UnitFactorsOf unit *~ LookupList dfactors lcsu )
 
diff --git a/Data/Metrology/Vector.hs b/Data/Metrology/Vector.hs
--- a/Data/Metrology/Vector.hs
+++ b/Data/Metrology/Vector.hs
@@ -10,7 +10,7 @@
 -- Module      :  Data.Metrology.Vector
 -- Copyright   :  (C) 2014 Richard Eisenberg
 -- License     :  BSD-style (see LICENSE)
--- Maintainer  :  Richard Eisenberg (eir@cis.upenn.edu)
+-- Maintainer  :  Richard Eisenberg (rae@cs.brynmawr.edu)
 -- Stability   :  experimental
 -- Portability :  non-portable
 --
diff --git a/Data/Metrology/Z.hs b/Data/Metrology/Z.hs
--- a/Data/Metrology/Z.hs
+++ b/Data/Metrology/Z.hs
@@ -1,8 +1,8 @@
 {- Data/Metrology/Z.hs
- 
+
    The units Package
    Copyright (c) 2013 Richard Eisenberg
-   eir@cis.upenn.edu
+   rae@cs.brynmawr.edu
 
    This file contains a definition of integers at the type-level, in terms
    of a promoted datatype 'Z'.
@@ -18,14 +18,14 @@
 -- Module      :  Data.Metrology.Z
 -- Copyright   :  (C) 2013 Richard Eisenberg
 -- License     :  BSD-style (see LICENSE)
--- Maintainer  :  Richard Eisenberg (eir@cis.upenn.edu)
+-- Maintainer  :  Richard Eisenberg (rae@cs.brynmawr.edu)
 -- Stability   :  experimental
 -- Portability :  non-portable
 --
 -- This module defines a datatype and operations to represent type-level
 -- integers. Though it's defined as part of the units package, it may be
 -- useful beyond dimensional analysis. If you have a compelling non-units
--- use of this package, please let me (Richard, @eir@ at @cis.upenn.edu@)
+-- use of this package, please let me (Richard, @rae@ at @cs.brynmawr.edu@)
 -- know.
 -----------------------------------------------------------------------------
 
@@ -52,7 +52,7 @@
   sSucc, sPred, sNegate,
 
   -- ** Comparisons
-  type (<), NonNegative,
+  type (Data.Metrology.Z.<), NonNegative,
 
   -- * Synonyms for certain numbers
   One, Two, Three, Four, Five, MOne, MTwo, MThree, MFour, MFive,
@@ -137,15 +137,17 @@
 
 -- | Less-than comparison
 type family (a :: Z) < (b :: Z) :: Bool where
-  Zero  < Zero   = False
-  Zero  < (S n)  = True
-  Zero  < (P n)  = False
-  (S n) < Zero   = False
-  (S n) < (S n') = n < n'
-  (S n) < (P n') = False
-  (P n) < Zero   = True
-  (P n) < (S n') = True
-  (P n) < (P n') = n < n'
+  -- fully qualify everywhere, because Data.Singletons.TH started exporting <
+  -- at some point
+  Zero  Data.Metrology.Z.< Zero   = False
+  Zero  Data.Metrology.Z.< (S n)  = True
+  Zero  Data.Metrology.Z.< (P n)  = False
+  (S n) Data.Metrology.Z.< Zero   = False
+  (S n) Data.Metrology.Z.< (S n') = n Data.Metrology.Z.< n'
+  (S n) Data.Metrology.Z.< (P n') = False
+  (P n) Data.Metrology.Z.< Zero   = True
+  (P n) Data.Metrology.Z.< (S n') = True
+  (P n) Data.Metrology.Z.< (P n') = n Data.Metrology.Z.< n'
 
 -- | Check if a type-level integer is in fact a natural number
 type family NonNegative z :: Constraint where
@@ -218,4 +220,3 @@
 
 pSucc = sSucc
 pPred = sPred
-
diff --git a/Tests/Main.hs b/Tests/Main.hs
--- a/Tests/Main.hs
+++ b/Tests/Main.hs
@@ -2,14 +2,14 @@
 
    The units Package
    Copyright (c) 2014 Richard Eisenberg
-   eir@cis.upenn.edu
+   rae@cs.brynmawr.edu
 
    This is the main testing file for the units package.
 -}
 
 {-# LANGUAGE ImplicitParams #-}
 
-module Tests.Main where
+module Main where
 
 import qualified Tests.Compile.CGS               ()
 import qualified Tests.Compile.EvalType          ()
@@ -48,12 +48,12 @@
   testGroup "Tests"
   [ Tests.Imperial.tests
   , Tests.LennardJones.tests
-  , Tests.Linearity.tests    
+  , Tests.Linearity.tests
   , Tests.OffSystemAdd.tests
   , Tests.OffSystemCSU.tests
   , Tests.Parser.tests
   , Tests.PhysicalConstants.tests
   , Tests.Show.tests
   , Tests.Travel.tests
-  , Tests.Vector.tests    
+  , Tests.Vector.tests
   ]
diff --git a/units-defs/Data/Constants/Math.hs b/units-defs/Data/Constants/Math.hs
--- a/units-defs/Data/Constants/Math.hs
+++ b/units-defs/Data/Constants/Math.hs
@@ -3,7 +3,7 @@
 -- Module      :  Data.Constants.Math
 -- Copyright   :  (C) 2014 Richard Eisenberg
 -- License     :  BSD-style (see LICENSE)
--- Maintainer  :  Richard Eisenberg (eir@cis.upenn.edu)
+-- Maintainer  :  Richard Eisenberg (rae@cs.brynmawr.edu)
 -- Stability   :  experimental
 -- Portability :  non-portable
 --
diff --git a/units-defs/Data/Constants/Mechanics.hs b/units-defs/Data/Constants/Mechanics.hs
--- a/units-defs/Data/Constants/Mechanics.hs
+++ b/units-defs/Data/Constants/Mechanics.hs
@@ -5,7 +5,7 @@
 -- Module      :  Data.Constants.Mechanics
 -- Copyright   :  (C) 2014 Richard Eisenberg
 -- License     :  BSD-style (see LICENSE)
--- Maintainer  :  Richard Eisenberg (eir@cis.upenn.edu)
+-- Maintainer  :  Richard Eisenberg (rae@cs.brynmawr.edu)
 -- Stability   :  experimental
 -- Portability :  non-portable
 --
diff --git a/units-defs/Data/Dimensions/SI.hs b/units-defs/Data/Dimensions/SI.hs
--- a/units-defs/Data/Dimensions/SI.hs
+++ b/units-defs/Data/Dimensions/SI.hs
@@ -5,7 +5,7 @@
 -- Module      :  Data.Dimensions.SI
 -- Copyright   :  (C) 2013 Richard Eisenberg
 -- License     :  BSD-style (see LICENSE)
--- Maintainer  :  Richard Eisenberg (eir@cis.upenn.edu)
+-- Maintainer  :  Richard Eisenberg (rae@cs.brynmawr.edu)
 -- Stability   :  experimental
 -- Portability :  non-portable
 --
diff --git a/units-defs/Data/Metrology/SI.hs b/units-defs/Data/Metrology/SI.hs
--- a/units-defs/Data/Metrology/SI.hs
+++ b/units-defs/Data/Metrology/SI.hs
@@ -3,7 +3,7 @@
 -- Module      :  Data.Metrology.SI
 -- Copyright   :  (C) 2013 Richard Eisenberg
 -- License     :  BSD-style (see LICENSE)
--- Maintainer  :  Richard Eisenberg (eir@cis.upenn.edu)
+-- Maintainer  :  Richard Eisenberg (rae@cs.brynmawr.edu)
 -- Stability   :  experimental
 -- Portability :  non-portable
 --
diff --git a/units-defs/Data/Metrology/SI/Mono.hs b/units-defs/Data/Metrology/SI/Mono.hs
--- a/units-defs/Data/Metrology/SI/Mono.hs
+++ b/units-defs/Data/Metrology/SI/Mono.hs
@@ -5,7 +5,7 @@
 -- Module      :  Data.Metrology.SI.Mono
 -- Copyright   :  (C) 2013 Richard Eisenberg
 -- License     :  BSD-style (see LICENSE)
--- Maintainer  :  Richard Eisenberg (eir@cis.upenn.edu)
+-- Maintainer  :  Richard Eisenberg (rae@cs.brynmawr.edu)
 -- Stability   :  experimental
 -- Portability :  non-portable
 --
diff --git a/units-defs/Data/Metrology/SI/MonoTypes.hs b/units-defs/Data/Metrology/SI/MonoTypes.hs
--- a/units-defs/Data/Metrology/SI/MonoTypes.hs
+++ b/units-defs/Data/Metrology/SI/MonoTypes.hs
@@ -5,7 +5,7 @@
 -- Module      :  Data.Metrology.SI.MonoTypes
 -- Copyright   :  (C) 2013 Richard Eisenberg
 -- License     :  BSD-style (see LICENSE)
--- Maintainer  :  Richard Eisenberg (eir@cis.upenn.edu)
+-- Maintainer  :  Richard Eisenberg (rae@cs.brynmawr.edu)
 -- Stability   :  experimental
 -- Portability :  non-portable
 --
diff --git a/units-defs/Data/Metrology/SI/Poly.hs b/units-defs/Data/Metrology/SI/Poly.hs
--- a/units-defs/Data/Metrology/SI/Poly.hs
+++ b/units-defs/Data/Metrology/SI/Poly.hs
@@ -5,7 +5,7 @@
 -- Module      :  Data.Metrology.SI.Poly
 -- Copyright   :  (C) 2013 Richard Eisenberg
 -- License     :  BSD-style (see LICENSE)
--- Maintainer  :  Richard Eisenberg (eir@cis.upenn.edu)
+-- Maintainer  :  Richard Eisenberg (rae@cs.brynmawr.edu)
 -- Stability   :  experimental
 -- Portability :  non-portable
 --
diff --git a/units-defs/Data/Metrology/SI/PolyTypes.hs b/units-defs/Data/Metrology/SI/PolyTypes.hs
--- a/units-defs/Data/Metrology/SI/PolyTypes.hs
+++ b/units-defs/Data/Metrology/SI/PolyTypes.hs
@@ -5,7 +5,7 @@
 -- Module      :  Data.Metrology.SI.PolyTypes
 -- Copyright   :  (C) 2013 Richard Eisenberg
 -- License     :  BSD-style (see LICENSE)
--- Maintainer  :  Richard Eisenberg (eir@cis.upenn.edu)
+-- Maintainer  :  Richard Eisenberg (rae@cs.brynmawr.edu)
 -- Stability   :  experimental
 -- Portability :  non-portable
 --
@@ -18,41 +18,41 @@
 import Data.Metrology
 import qualified Data.Dimensions.SI as D
 
-type Length              = MkQu_DLN D.Length              
-type Mass                = MkQu_DLN D.Mass                
-type Time                = MkQu_DLN D.Time                
-type Current             = MkQu_DLN D.Current             
-type Temperature         = MkQu_DLN D.Temperature         
-type AmountOfSubstance   = MkQu_DLN D.AmountOfSubstance   
-type LuminousIntensity   = MkQu_DLN D.LuminousIntensity   
+type Length              = MkQu_DLN D.Length
+type Mass                = MkQu_DLN D.Mass
+type Time                = MkQu_DLN D.Time
+type Current             = MkQu_DLN D.Current
+type Temperature         = MkQu_DLN D.Temperature
+type AmountOfSubstance   = MkQu_DLN D.AmountOfSubstance
+type LuminousIntensity   = MkQu_DLN D.LuminousIntensity
 
-type Area                = MkQu_DLN D.Area                
-type Volume              = MkQu_DLN D.Volume              
-type Velocity            = MkQu_DLN D.Velocity            
-type Acceleration        = MkQu_DLN D.Acceleration        
-type Wavenumber          = MkQu_DLN D.Wavenumber          
-type Density             = MkQu_DLN D.Density             
-type SurfaceDensity      = MkQu_DLN D.SurfaceDensity      
-type SpecificVolume      = MkQu_DLN D.SpecificVolume      
-type CurrentDensity      = MkQu_DLN D.CurrentDensity      
-type MagneticStrength    = MkQu_DLN D.MagneticStrength    
-type Concentration       = MkQu_DLN D.Concentration       
-type Luminance           = MkQu_DLN D.Luminance           
-type Frequency           = MkQu_DLN D.Frequency           
-type Force               = MkQu_DLN D.Force               
-type Pressure            = MkQu_DLN D.Pressure            
-type Energy              = MkQu_DLN D.Energy              
-type Power               = MkQu_DLN D.Power               
-type Charge              = MkQu_DLN D.Charge              
-type ElectricPotential   = MkQu_DLN D.ElectricPotential   
-type Capacitance         = MkQu_DLN D.Capacitance         
-type Resistance          = MkQu_DLN D.Resistance          
-type Conductance         = MkQu_DLN D.Conductance         
-type MagneticFlux        = MkQu_DLN D.MagneticFlux        
-type MagneticFluxDensity = MkQu_DLN D.MagneticFluxDensity 
-type Inductance          = MkQu_DLN D.Inductance          
-type LuminousFlux        = MkQu_DLN D.LuminousFlux        
-type Illuminance         = MkQu_DLN D.Illuminance         
-type Kerma               = MkQu_DLN D.Kerma               
-type CatalyticActivity   = MkQu_DLN D.CatalyticActivity   
-type Momentum            = MkQu_DLN D.Momentum            
+type Area                = MkQu_DLN D.Area
+type Volume              = MkQu_DLN D.Volume
+type Velocity            = MkQu_DLN D.Velocity
+type Acceleration        = MkQu_DLN D.Acceleration
+type Wavenumber          = MkQu_DLN D.Wavenumber
+type Density             = MkQu_DLN D.Density
+type SurfaceDensity      = MkQu_DLN D.SurfaceDensity
+type SpecificVolume      = MkQu_DLN D.SpecificVolume
+type CurrentDensity      = MkQu_DLN D.CurrentDensity
+type MagneticStrength    = MkQu_DLN D.MagneticStrength
+type Concentration       = MkQu_DLN D.Concentration
+type Luminance           = MkQu_DLN D.Luminance
+type Frequency           = MkQu_DLN D.Frequency
+type Force               = MkQu_DLN D.Force
+type Pressure            = MkQu_DLN D.Pressure
+type Energy              = MkQu_DLN D.Energy
+type Power               = MkQu_DLN D.Power
+type Charge              = MkQu_DLN D.Charge
+type ElectricPotential   = MkQu_DLN D.ElectricPotential
+type Capacitance         = MkQu_DLN D.Capacitance
+type Resistance          = MkQu_DLN D.Resistance
+type Conductance         = MkQu_DLN D.Conductance
+type MagneticFlux        = MkQu_DLN D.MagneticFlux
+type MagneticFluxDensity = MkQu_DLN D.MagneticFluxDensity
+type Inductance          = MkQu_DLN D.Inductance
+type LuminousFlux        = MkQu_DLN D.LuminousFlux
+type Illuminance         = MkQu_DLN D.Illuminance
+type Kerma               = MkQu_DLN D.Kerma
+type CatalyticActivity   = MkQu_DLN D.CatalyticActivity
+type Momentum            = MkQu_DLN D.Momentum
diff --git a/units-defs/Data/Units/CGS.hs b/units-defs/Data/Units/CGS.hs
--- a/units-defs/Data/Units/CGS.hs
+++ b/units-defs/Data/Units/CGS.hs
@@ -6,7 +6,7 @@
 -- Module      :  Data.Units.CGS
 -- Copyright   :  (C) 2014 Richard Eisenberg
 -- License     :  BSD-style (see LICENSE)
--- Maintainer  :  Richard Eisenberg (eir@cis.upenn.edu)
+-- Maintainer  :  Richard Eisenberg (rae@cs.brynmawr.edu)
 -- Stability   :  experimental
 -- Portability :  non-portable
 --
diff --git a/units-defs/Data/Units/PreciousMetals.hs b/units-defs/Data/Units/PreciousMetals.hs
--- a/units-defs/Data/Units/PreciousMetals.hs
+++ b/units-defs/Data/Units/PreciousMetals.hs
@@ -5,7 +5,7 @@
 -- Module      :  Data.Metrology.Units.PreciousMetals
 -- Copyright   :  (C) 2013 Richard Eisenberg
 -- License     :  BSD-style (see LICENSE)
--- Maintainer  :  Richard Eisenberg (eir@cis.upenn.edu)
+-- Maintainer  :  Richard Eisenberg (rae@cs.brynmawr.edu)
 -- Stability   :  experimental
 -- Portability :  non-portable
 --
diff --git a/units-defs/Data/Units/SI.hs b/units-defs/Data/Units/SI.hs
--- a/units-defs/Data/Units/SI.hs
+++ b/units-defs/Data/Units/SI.hs
@@ -5,7 +5,7 @@
 -- Module      :  Data.Units.SI
 -- Copyright   :  (C) 2013 Richard Eisenberg
 -- License     :  BSD-style (see LICENSE)
--- Maintainer  :  Richard Eisenberg (eir@cis.upenn.edu)
+-- Maintainer  :  Richard Eisenberg (rae@cs.brynmawr.edu)
 -- Stability   :  experimental
 -- Portability :  non-portable
 --
@@ -103,4 +103,3 @@
   , ''Weber, ''Tesla, ''Henry, ''Lumen, ''Lux, ''Becquerel, ''Gray
   , ''Sievert, ''Katal, ''Hectare, ''Ton
   ]
-    
diff --git a/units-defs/Data/Units/SI/Parser.hs b/units-defs/Data/Units/SI/Parser.hs
--- a/units-defs/Data/Units/SI/Parser.hs
+++ b/units-defs/Data/Units/SI/Parser.hs
@@ -5,7 +5,7 @@
 -- Module      :  Data.Units.SI.Parser
 -- Copyright   :  (C) 2013 Richard Eisenberg
 -- License     :  BSD-style (see LICENSE)
--- Maintainer  :  Richard Eisenberg (eir@cis.upenn.edu)
+-- Maintainer  :  Richard Eisenberg (rae@cs.brynmawr.edu)
 -- Stability   :  experimental
 -- Portability :  non-portable
 --
diff --git a/units-defs/Data/Units/SI/Prefixes.hs b/units-defs/Data/Units/SI/Prefixes.hs
--- a/units-defs/Data/Units/SI/Prefixes.hs
+++ b/units-defs/Data/Units/SI/Prefixes.hs
@@ -5,7 +5,7 @@
 -- Module      :  Data.Units.SI.Prefixes
 -- Copyright   :  (C) 2013 Richard Eisenberg
 -- License     :  BSD-style (see LICENSE)
--- Maintainer  :  Richard Eisenberg (eir@cis.upenn.edu)
+-- Maintainer  :  Richard Eisenberg (rae@cs.brynmawr.edu)
 -- Stability   :  experimental
 -- Portability :  non-portable
 --
diff --git a/units-defs/Data/Units/US.hs b/units-defs/Data/Units/US.hs
--- a/units-defs/Data/Units/US.hs
+++ b/units-defs/Data/Units/US.hs
@@ -3,7 +3,7 @@
 -- Module      :  Data.Units.US
 -- Copyright   :  (C) 2013 Richard Eisenberg
 -- License     :  BSD-style (see LICENSE)
--- Maintainer  :  Richard Eisenberg (eir@cis.upenn.edu)
+-- Maintainer  :  Richard Eisenberg (rae@cs.brynmawr.edu)
 -- Stability   :  experimental
 -- Portability :  non-portable
 --
@@ -33,7 +33,7 @@
 
   -- * Velocity
   Knot(..),
-  
+
   -- * Area
   Survey.Acre(..),
 
diff --git a/units-defs/Data/Units/US/Apothecaries.hs b/units-defs/Data/Units/US/Apothecaries.hs
--- a/units-defs/Data/Units/US/Apothecaries.hs
+++ b/units-defs/Data/Units/US/Apothecaries.hs
@@ -5,7 +5,7 @@
 -- Module      :  Data.Units.US.Apothecaries
 -- Copyright   :  (C) 2013 Richard Eisenberg
 -- License     :  BSD-style (see LICENSE)
--- Maintainer  :  Richard Eisenberg (eir@cis.upenn.edu)
+-- Maintainer  :  Richard Eisenberg (rae@cs.brynmawr.edu)
 -- Stability   :  experimental
 -- Portability :  non-portable
 --
diff --git a/units-defs/Data/Units/US/Avoirdupois.hs b/units-defs/Data/Units/US/Avoirdupois.hs
--- a/units-defs/Data/Units/US/Avoirdupois.hs
+++ b/units-defs/Data/Units/US/Avoirdupois.hs
@@ -5,7 +5,7 @@
 -- Module      :  Data.Units.US.Avoirdupois
 -- Copyright   :  (C) 2013 Richard Eisenberg
 -- License     :  BSD-style (see LICENSE)
--- Maintainer  :  Richard Eisenberg (eir@cis.upenn.edu)
+-- Maintainer  :  Richard Eisenberg (rae@cs.brynmawr.edu)
 -- Stability   :  experimental
 -- Portability :  non-portable
 --
diff --git a/units-defs/Data/Units/US/DryVolume.hs b/units-defs/Data/Units/US/DryVolume.hs
--- a/units-defs/Data/Units/US/DryVolume.hs
+++ b/units-defs/Data/Units/US/DryVolume.hs
@@ -5,7 +5,7 @@
 -- Module      :  Data.Units.US.DryVolume
 -- Copyright   :  (C) 2013 Richard Eisenberg
 -- License     :  BSD-style (see LICENSE)
--- Maintainer  :  Richard Eisenberg (eir@cis.upenn.edu)
+-- Maintainer  :  Richard Eisenberg (rae@cs.brynmawr.edu)
 -- Stability   :  experimental
 -- Portability :  non-portable
 --
diff --git a/units-defs/Data/Units/US/Liquid.hs b/units-defs/Data/Units/US/Liquid.hs
--- a/units-defs/Data/Units/US/Liquid.hs
+++ b/units-defs/Data/Units/US/Liquid.hs
@@ -5,7 +5,7 @@
 -- Module      :  Data.Units.US.Liquid
 -- Copyright   :  (C) 2013 Richard Eisenberg
 -- License     :  BSD-style (see LICENSE)
--- Maintainer  :  Richard Eisenberg (eir@cis.upenn.edu)
+-- Maintainer  :  Richard Eisenberg (rae@cs.brynmawr.edu)
 -- Stability   :  experimental
 -- Portability :  non-portable
 --
diff --git a/units-defs/Data/Units/US/Misc.hs b/units-defs/Data/Units/US/Misc.hs
--- a/units-defs/Data/Units/US/Misc.hs
+++ b/units-defs/Data/Units/US/Misc.hs
@@ -5,7 +5,7 @@
 -- Module      :  Data.Units.US.Misc
 -- Copyright   :  (C) 2013 Richard Eisenberg
 -- License     :  BSD-style (see LICENSE)
--- Maintainer  :  Richard Eisenberg (eir@cis.upenn.edu)
+-- Maintainer  :  Richard Eisenberg (rae@cs.brynmawr.edu)
 -- Stability   :  experimental
 -- Portability :  non-portable
 --
@@ -81,5 +81,3 @@
 -- | Standard lengths: 'Foot', 'Inch', 'Yard', and 'Mile'
 lengths :: [Name]
 lengths = [ ''Foot, ''Inch, ''Yard, ''Mile ]
-
-
diff --git a/units-defs/Data/Units/US/Survey.hs b/units-defs/Data/Units/US/Survey.hs
--- a/units-defs/Data/Units/US/Survey.hs
+++ b/units-defs/Data/Units/US/Survey.hs
@@ -5,7 +5,7 @@
 -- Module      :  Data.Units.US.Survey
 -- Copyright   :  (C) 2013 Richard Eisenberg
 -- License     :  BSD-style (see LICENSE)
--- Maintainer  :  Richard Eisenberg (eir@cis.upenn.edu)
+-- Maintainer  :  Richard Eisenberg (rae@cs.brynmawr.edu)
 -- Stability   :  experimental
 -- Portability :  non-portable
 --
diff --git a/units-defs/Data/Units/US/Troy.hs b/units-defs/Data/Units/US/Troy.hs
--- a/units-defs/Data/Units/US/Troy.hs
+++ b/units-defs/Data/Units/US/Troy.hs
@@ -5,7 +5,7 @@
 -- Module      :  Data.Units.US.Troy
 -- Copyright   :  (C) 2013 Richard Eisenberg
 -- License     :  BSD-style (see LICENSE)
--- Maintainer  :  Richard Eisenberg (eir@cis.upenn.edu)
+-- Maintainer  :  Richard Eisenberg (rae@cs.brynmawr.edu)
 -- Stability   :  experimental
 -- Portability :  non-portable
 --
diff --git a/units.cabal b/units.cabal
--- a/units.cabal
+++ b/units.cabal
@@ -1,11 +1,11 @@
 name:           units
-version:        2.4
+version:        2.4.1
 cabal-version:  >= 1.10
 synopsis:       A domain-specific type system for dimensional analysis
 homepage:       https://github.com/goldfirere/units
 category:       Math
-author:         Richard Eisenberg <eir@cis.upenn.edu>
-maintainer:     Richard Eisenberg <eir@cis.upenn.edu>, Takayuki Muranushi <muranushi@gmail.com>
+author:         Richard Eisenberg <rae@cs.brynmawr.edu>
+maintainer:     Richard Eisenberg <rae@cs.brynmawr.edu>, Takayuki Muranushi <muranushi@gmail.com>
 bug-reports:    https://github.com/goldfirere/units/issues
 stability:      experimental
 extra-source-files: README.md
@@ -24,6 +24,7 @@
 license:        BSD3
 license-file:   LICENSE
 build-type:     Simple
+Tested-With: GHC == 7.8.4, GHC == 7.10.2, GHC == 7.10.3, GHC == 8.0.1, GHC == 8.0.2, GHC == 8.2.1
 description:
 
     The units package provides a mechanism for compile-time
@@ -46,7 +47,7 @@
 source-repository this
   type:     git
   location: https://github.com/goldfirere/units.git
-  tag:      v2.4
+  tag:      v2.4.1
 
 library
   ghc-options: -Wall
@@ -118,7 +119,7 @@
   hs-source-dirs:   units-defs, .
 
     -- optimize compile time, not runtime!
-  ghc-options:        -O0 -Wall -main-is Tests.Main
+  ghc-options:        -O0 -Wall
   if impl(ghc >= 7.10)
     ghc-options: -fno-warn-unticked-promoted-constructors
   if impl(ghc >= 8.0)
