diff --git a/Text/Parse/Units.hs b/Text/Parse/Units.hs
--- a/Text/Parse/Units.hs
+++ b/Text/Parse/Units.hs
@@ -1,5 +1,5 @@
 {-# LANGUAGE LambdaCase, NoMonomorphismRestriction, FlexibleContexts, RankNTypes,
-             Safe #-}
+             Safe, DeriveGeneric, DeriveDataTypeable #-}
 {-# OPTIONS_HADDOCK prune #-}
 
 -----------------------------------------------------------------------------
@@ -46,6 +46,7 @@
 
 import Prelude hiding ( lex, div )
 
+import GHC.Generics (Generic)
 import Text.Parsec         hiding ( tab )
 import Text.Parsec.String
 import Text.Parsec.Pos
@@ -53,6 +54,7 @@
 import qualified Data.MultiMap as MM
 import Control.Monad.Reader
 import Control.Arrow       hiding ( app)
+import Data.Data (Data)
 import Data.Maybe
 import Data.Char
 
@@ -117,6 +119,7 @@
                    | Mult (UnitExp pre u) (UnitExp pre u)
                    | Div (UnitExp pre u) (UnitExp pre u)
                    | Pow (UnitExp pre u) Integer
+                   deriving (Eq, Ord, Generic, Data)
 
 instance (Show pre, Show u) => Show (UnitExp pre u) where
   show Unity               = "1"
@@ -181,7 +184,7 @@
 -- representations.
 data SymbolTable pre u = SymbolTable { prefixTable :: PrefixTable pre
                                      , unitTable   :: UnitTable u
-                                     }
+                                     } deriving (Generic)
 
 -- | Build a 'Map' from an association list, checking for ambiguity
 unambFromList :: (Ord a, Show b) => [(a,b)] -> Either [(a,[String])] (Map.Map a b)
diff --git a/units-parser.cabal b/units-parser.cabal
--- a/units-parser.cabal
+++ b/units-parser.cabal
@@ -1,5 +1,5 @@
 name:           units-parser
-version:        0.1.0.1
+version:        0.1.1
 cabal-version:  >= 1.10
 synopsis:       A parser for units of measure
 category:       Text
