diff --git a/css-easings.cabal b/css-easings.cabal
--- a/css-easings.cabal
+++ b/css-easings.cabal
@@ -1,5 +1,5 @@
 name:                css-easings
-version:             0.2.1.0
+version:             0.2.2.0
 synopsis:            Defining and manipulating css easing strings.
 description:
   A package to define css easing strings. These can be used in Julius,
@@ -26,6 +26,7 @@
     , aeson >=1.0 && <2
     , blaze-markup >=0.8 && <0.9
     , data-default >=0.7 && <0.8
+    , deepseq >=1.4.3.0
     , QuickCheck >=2.8 && <2.15
     , scientific >=0.3 && <0.4
     , shakespeare >=2.0 && <3.0
diff --git a/src/Css/Easing.hs b/src/Css/Easing.hs
--- a/src/Css/Easing.hs
+++ b/src/Css/Easing.hs
@@ -1,4 +1,4 @@
-{-# LANGUAGE CPP, OverloadedStrings, PatternSynonyms #-}
+{-# LANGUAGE CPP, DeriveDataTypeable, DeriveGeneric, OverloadedStrings, PatternSynonyms #-}
 
 {-|
 Module      : Css.Easing
@@ -34,7 +34,10 @@
     , pattern EaseInBack, pattern EaseOutBack, pattern EaseInOutBack
   ) where
 
+import Control.DeepSeq(NFData)
+
 import Data.Aeson(Value(String), ToJSON(toJSON))
+import Data.Data(Data)
 import Data.Default(Default(def))
 import Data.Scientific(Scientific, scientific)
 #if __GLASGOW_HASKELL__ < 803
@@ -42,6 +45,8 @@
 #endif
 import Data.Text(Text, intercalate, pack)
 
+import GHC.Generics(Generic)
+
 import Text.Blaze(ToMarkup(toMarkup), text)
 import Text.Julius(ToJavascript(toJavascript))
 
@@ -66,8 +71,10 @@
     | CubicBezier Scientific Scientific Scientific Scientific
     -- ^ An author defined cubic-Bezier curve, where the p1 and p3 values must
     -- be in the range of 0 to 1.
-    deriving (Eq, Ord, Show)
+    deriving (Data, Eq, Generic, Ord, Show)
 
+instance NFData Easing
+
 -- | Convert an 'Easing' to its css counterpart. The css aliases like
 -- @"steps-start"@ are /not/ checked. Therefore, only strings like "@steps(..)"
 -- and @cubic-bezier(..)@ are returned.
@@ -96,7 +103,9 @@
     | JumpEnd -- ^ In css this is denoted as @jump-end@. Denotes a right-continuous function, so that the last jump happens when the animation ends.
     | JumpNone -- ^ In css this is denoted as @jump-none@. There is no jump on either end. Instead, holding at both the 0% mark and the 100% mark, each for 1/n of the duration.
     | JumpBoth -- ^ In css this is denoted as @jump-both@. Includes pauses at both the 0% and 100% marks, effectively adding a step during the transition time.
-    deriving (Bounded, Enum, Eq, Ord, Read, Show)
+    deriving (Bounded, Data, Enum, Eq, Generic, Ord, Read, Show)
+
+instance NFData JumpTerm
 
 -- | Convert a 'JumpTerm' to its css counterpart. So 'JumpStart' is for example
 -- converted to @"jump-start"@.
