diff --git a/CHANGELOG b/CHANGELOG
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,5 +1,9 @@
 # Changelog for Hedis
 
+## 0.7.1
+
+* Add NFData instances
+
 ## 0.7.0
 
 * Enforce all replies being recieved in runRedis. Pipelining between runRedis 
diff --git a/hedis.cabal b/hedis.cabal
--- a/hedis.cabal
+++ b/hedis.cabal
@@ -1,5 +1,5 @@
 name:               hedis
-version:            0.7.0
+version:            0.7.1
 synopsis:
     Client library for the Redis datastore: supports full command set,  
     pipelining.
@@ -55,11 +55,12 @@
   ghc-options:      -Wall -fwarn-tabs
   ghc-prof-options: -auto-all
   exposed-modules:  Database.Redis
-  build-depends:    attoparsec >= 0.12,
+  build-depends:    BoundedChan >= 1.0,
+                    attoparsec >= 0.12,
                     base >= 4.6 && < 5,
-                    BoundedChan >= 1.0,
                     bytestring >= 0.9,
                     bytestring-lexing >= 0.5,
+                    deepseq,
                     mtl >= 2,
                     network >= 2,
                     resource-pool >= 0.2,
@@ -93,7 +94,7 @@
         base == 4.*,
         bytestring >= 0.9 && < 0.11,
         hedis,
-        HUnit == 1.2.*,
+        HUnit,
         mtl == 2.*,
         test-framework,
         test-framework-hunit,
diff --git a/src/Database/Redis/Core.hs b/src/Database/Redis/Core.hs
--- a/src/Database/Redis/Core.hs
+++ b/src/Database/Redis/Core.hs
@@ -11,7 +11,9 @@
 ) where
 
 import Prelude
+#if __GLASGOW_HASKELL__ < 710
 import Control.Applicative
+#endif
 import Control.Exception (evaluate)
 import Control.Monad.State
 import qualified Data.ByteString as B
diff --git a/src/Database/Redis/Protocol.hs b/src/Database/Redis/Protocol.hs
--- a/src/Database/Redis/Protocol.hs
+++ b/src/Database/Redis/Protocol.hs
@@ -1,12 +1,18 @@
+{-# LANGUAGE CPP #-}
+{-# LANGUAGE DeriveGeneric #-}
 {-# LANGUAGE OverloadedStrings #-}
 
 module Database.Redis.Protocol (Reply(..), reply, renderRequest) where
 
 import Prelude hiding (error, take)
+#if __GLASGOW_HASKELL__ < 710
 import Control.Applicative
+#endif
+import Control.DeepSeq
 import Data.Attoparsec.ByteString (takeTill)
 import Data.Attoparsec.ByteString.Char8 hiding (takeTill)
 import Data.ByteString.Char8 (ByteString)
+import GHC.Generics
 import qualified Data.ByteString.Char8 as B
 
 -- |Low-level representation of replies from the Redis server.
@@ -15,7 +21,9 @@
            | Integer Integer
            | Bulk (Maybe ByteString)
            | MultiBulk (Maybe [Reply])
-         deriving (Eq, Show)
+         deriving (Eq, Show, Generic)
+
+instance NFData Reply
 
 ------------------------------------------------------------------------------
 -- Request
diff --git a/src/Database/Redis/PubSub.hs b/src/Database/Redis/PubSub.hs
--- a/src/Database/Redis/PubSub.hs
+++ b/src/Database/Redis/PubSub.hs
@@ -1,4 +1,4 @@
-{-# LANGUAGE OverloadedStrings, RecordWildCards, EmptyDataDecls,
+{-# LANGUAGE CPP, OverloadedStrings, RecordWildCards, EmptyDataDecls,
     FlexibleInstances, FlexibleContexts #-}
 
 module Database.Redis.PubSub (
@@ -9,7 +9,9 @@
     subscribe, unsubscribe, psubscribe, punsubscribe
 ) where
 
+#if __GLASGOW_HASKELL__ < 710
 import Control.Applicative
+#endif
 import Control.Monad
 import Control.Monad.State
 import Data.ByteString.Char8 (ByteString)
diff --git a/src/Database/Redis/Transactions.hs b/src/Database/Redis/Transactions.hs
--- a/src/Database/Redis/Transactions.hs
+++ b/src/Database/Redis/Transactions.hs
@@ -1,4 +1,5 @@
-{-# LANGUAGE OverloadedStrings, FlexibleInstances, MultiParamTypeClasses,
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE CPP, OverloadedStrings, FlexibleInstances, MultiParamTypeClasses,
     GeneralizedNewtypeDeriving #-}
 
 module Database.Redis.Transactions (
@@ -6,8 +7,12 @@
     Queued(), TxResult(..), RedisTx(),
 ) where
 
+#if __GLASGOW_HASKELL__ < 710
 import Control.Applicative
+#endif
 import Control.Monad.State.Strict
+import Control.DeepSeq
+import GHC.Generics
 import Data.ByteString (ByteString)
 import Data.Vector (Vector, fromList, (!))
 
@@ -72,7 +77,9 @@
     -- ^ Transaction aborted due to an earlier 'watch' command.
     | TxError String
     -- ^ At least one of the commands returned an 'Error' reply.
-    deriving (Show, Eq)
+    deriving (Show, Eq, Generic)
+
+instance NFData a => NFData (TxResult a)
 
 -- |Watch the given keys to determine execution of the MULTI\/EXEC block
 --  (<http://redis.io/commands/watch>).
diff --git a/src/Database/Redis/Types.hs b/src/Database/Redis/Types.hs
--- a/src/Database/Redis/Types.hs
+++ b/src/Database/Redis/Types.hs
@@ -1,12 +1,17 @@
-{-# LANGUAGE FlexibleInstances, OverlappingInstances, TypeSynonymInstances,
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE CPP, FlexibleInstances, OverlappingInstances, TypeSynonymInstances,
     OverloadedStrings #-}
 
 module Database.Redis.Types where
 
+#if __GLASGOW_HASKELL__ < 710
 import Control.Applicative
+#endif
+import Control.DeepSeq
 import Data.ByteString.Char8 (ByteString, pack)
 import qualified Data.ByteString.Lex.Fractional as F (readSigned, readDecimal)
 import qualified Data.ByteString.Lex.Integral as I (readSigned, readDecimal)
+import GHC.Generics
 
 import Database.Redis.Protocol
 
@@ -36,7 +41,9 @@
 -- RedisResult instances
 --
 data Status = Ok | Pong | Status ByteString
-    deriving (Show, Eq)
+    deriving (Show, Eq, Generic)
+
+instance NFData Status
 
 data RedisType = None | String | Hash | List | Set | ZSet
     deriving (Show, Eq)
