diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,8 @@
+0.2.2
+=====
+
+*   Provide `NFData` instance for all suitable types.
+
 0.2.1
 =====
 
diff --git a/aws-general.cabal b/aws-general.cabal
--- a/aws-general.cabal
+++ b/aws-general.cabal
@@ -3,7 +3,7 @@
 -- ------------------------------------------------------ --
 
 Name: aws-general
-Version: 0.2.1
+Version: 0.2.2
 Synopsis: Bindings for Amazon Web Services (AWS) General Reference
 description:
     Bindings for Amazon Web Services (AWS) General Reference including AWS Signature V4.
@@ -18,7 +18,7 @@
 License-file: LICENSE
 Author: Lars Kuhtz <lars@alephcloud.com>
 Maintainer: Lars Kuhtz <lars@alephcloud.com>
-Copyright: Copyright (c) 2014 AlephCloud, Inc.
+Copyright: Copyright (c) 2014-2015 AlephCloud, Inc.
 Category: Network, Web, AWS, Cloud, Distributed Computing
 Build-type: Simple
 
@@ -38,7 +38,7 @@
 source-repository this
     type: git
     location: https://github.com/alephcloud/hs-aws-general.git
-    tag: 0.2.1
+    tag: 0.2.2
 
 flag normalize-signature-v4-date
     Description:
@@ -72,6 +72,7 @@
         bytestring >= 0.10.0.2,
         case-insensitive >= 1.2,
         cryptohash >= 0.11,
+        deepseq >= 1.3,
         hashable >= 1.2,
         http-types >= 0.8,
         parsers >= 0.11,
diff --git a/constraints b/constraints
--- a/constraints
+++ b/constraints
@@ -1,40 +1,40 @@
-constraints: QuickCheck ==2.7.6,
+constraints: QuickCheck ==2.8,
              aeson ==0.8.0.2,
-             array ==0.5.0.0,
-             attoparsec ==0.12.1.2,
-             base ==4.7.0.1,
+             array ==0.5.1.0,
+             attoparsec ==0.12.1.5,
+             base ==4.8.0.0,
              base16-bytestring ==0.1.1.6,
-             blaze-builder ==0.3.3.4,
+             blaze-builder ==0.4.0.1,
              byteable ==0.1.1,
-             bytestring ==0.10.4.0,
-             case-insensitive ==1.2.0.3,
+             bytestring ==0.10.6.0,
+             case-insensitive ==1.2.0.4,
              charset ==0.3.7,
-             containers ==0.5.5.1,
+             containers ==0.5.6.2,
              cryptohash ==0.11.6,
-             deepseq ==1.3.0.2,
-             dlist ==0.7.1,
-             ghc-prim ==0.3.1.0,
-             hashable ==1.2.3.1,
-             http-types ==0.8.5,
-             integer-gmp ==0.5.1.0,
+             deepseq ==1.4.1.1,
+             dlist ==0.7.1.1,
+             ghc-prim ==0.4.0.0,
+             hashable ==1.2.3.2,
+             http-types ==0.8.6,
+             integer-gmp ==1.0.0.0,
              mtl ==2.2.1,
              nats ==1,
-             old-locale ==1.0.0.6,
-             old-time ==1.1.0.2,
-             parsec ==3.1.7,
+             old-locale ==1.0.0.7,
+             old-time ==1.1.0.3,
+             parsec ==3.1.9,
              parsers ==0.12.1.1,
-             pretty ==1.1.1.1,
-             primitive ==0.5.3.0,
-             quickcheck-instances ==0.3.10,
+             pretty ==1.1.2.0,
+             primitive ==0.5.4.0,
+             quickcheck-instances ==0.3.11,
              random ==1.1,
              rts ==1.0,
-             scientific ==0.3.3.5,
-             semigroups ==0.16.0.1,
-             syb ==0.4.2,
-             template-haskell ==2.9.0.0,
-             text ==1.2.0.3,
+             scientific ==0.3.3.8,
+             semigroups ==0.16.2.2,
+             syb ==0.4.4,
+             template-haskell ==2.10.0.0,
+             text ==1.2.0.4,
              tf-random ==0.5,
              time ==1.5.0.1,
-             transformers ==0.4.1.0,
+             transformers ==0.4.2.0,
              unordered-containers ==0.2.5.1,
-             vector ==0.10.11.0
+             vector ==0.10.12.3
diff --git a/src/Aws/General.hs b/src/Aws/General.hs
--- a/src/Aws/General.hs
+++ b/src/Aws/General.hs
@@ -1,7 +1,8 @@
-{-# LANGUAGE GeneralizedNewtypeDeriving #-}
-{-# LANGUAGE ScopedTypeVariables #-}
 {-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
 {-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE ScopedTypeVariables #-}
 
 -- |
 -- Module: Aws.General
@@ -61,6 +62,7 @@
 ) where
 
 import Control.Applicative
+import Control.DeepSeq
 import Control.Monad
 
 import Data.Aeson (ToJSON(..), FromJSON(..), withText)
@@ -72,6 +74,8 @@
 import qualified Data.Text as T
 import Data.Typeable
 
+import GHC.Generics
+
 import qualified Test.QuickCheck as Q
 import Test.QuickCheck.Instances ()
 
@@ -97,8 +101,10 @@
 
 data GeneralVersion
     = GeneralVersion_1_0
-    deriving (Show, Read, Eq, Ord, Enum, Bounded, Typeable)
+    deriving (Show, Read, Eq, Ord, Enum, Bounded, Typeable, Generic)
 
+instance NFData GeneralVersion
+
 generalVersionToText :: (IsString a) => GeneralVersion -> a
 generalVersionToText GeneralVersion_1_0 = "1.0"
 
@@ -119,8 +125,10 @@
 data SignatureVersion
     = SignatureVersion2
     | SignatureVersion4
-    deriving (Show, Read, Eq, Ord, Enum, Bounded, Typeable)
+    deriving (Show, Read, Eq, Ord, Enum, Bounded, Typeable, Generic)
 
+instance NFData SignatureVersion
+
 signatureVersionToText :: IsString a => SignatureVersion -> a
 signatureVersionToText SignatureVersion2 = "2"
 signatureVersionToText SignatureVersion4 = "4"
@@ -144,8 +152,10 @@
 data SignatureMethod
     = SignatureMethodSha1
     | SignatureMethodSha256
-    deriving (Show, Read, Eq, Ord, Enum, Bounded, Typeable)
+    deriving (Show, Read, Eq, Ord, Enum, Bounded, Typeable, Generic)
 
+instance NFData SignatureMethod
+
 signatureMethodToText :: IsString a => SignatureMethod -> a
 signatureMethodToText SignatureMethodSha1 = "HmacSHA1"
 signatureMethodToText SignatureMethodSha256 = "HmacSHA256"
@@ -187,8 +197,10 @@
     -- ^ To override the region settings with a custom service endpoint, e.g.
     -- for testing purpose
 
-    deriving (Show, Read, Eq, Ord, Typeable)
+    deriving (Show, Read, Eq, Ord, Typeable, Generic)
 
+instance NFData Region
+
 regionToText :: (Monoid a, IsString a) => Region -> a
 regionToText ApNortheast1 = "ap-northeast-1"
 regionToText ApSoutheast1 = "ap-southeast-1"
@@ -282,8 +294,10 @@
 -- This is actually a 12 digit number.
 --
 newtype AccountId = AccountId T.Text
-    deriving (Show, Read, Eq, Ord, IsString, Typeable)
+    deriving (Show, Read, Eq, Ord, IsString, Typeable, Generic)
 
+instance NFData AccountId
+
 accountIdToText :: (IsString a) => AccountId -> a
 accountIdToText (AccountId t) = fromString $ T.unpack t
 
@@ -309,8 +323,10 @@
 -- This is actually a long hexadecimal number
 --
 newtype CanonicalUserId = CanonicalUserId T.Text
-    deriving (Show, Read, Eq, Ord, IsString, Typeable)
+    deriving (Show, Read, Eq, Ord, IsString, Typeable, Generic)
 
+instance NFData CanonicalUserId
+
 canonicalUserIdToText :: (IsString a) => CanonicalUserId -> a
 canonicalUserIdToText (CanonicalUserId t) = fromString $ T.unpack t
 
@@ -367,8 +383,10 @@
     | ServiceNamespaceSwf
     | ServiceNamespaceHost
     -- ^ For testing purposes (see <http://docs.aws.amazon.com/general/1.0/gr/signature-v4-test-suite.html>)
-    deriving (Show, Read, Eq, Ord, Enum, Bounded, Typeable)
+    deriving (Show, Read, Eq, Ord, Enum, Bounded, Typeable, Generic)
 
+instance NFData ServiceNamespace
+
 serviceNamespaceToText :: IsString a => ServiceNamespace -> a
 serviceNamespaceToText ServiceNamespaceAwsPortal = "aws-portal"
 serviceNamespaceToText ServiceNamespaceAutoscaling = "autoscaling"
@@ -462,7 +480,9 @@
     -- ^ expected to be non-empty. Elements are separated by only @:@.
     -- @/@ is not treated specially.
     }
-    deriving (Show, Read, Eq, Ord, Typeable)
+    deriving (Show, Read, Eq, Ord, Typeable, Generic)
+
+instance NFData Arn
 
 arnToText :: (IsString a, Monoid a) => Arn -> a
 arnToText arn = "arn:aws"
diff --git a/src/Aws/SignatureV4.hs b/src/Aws/SignatureV4.hs
--- a/src/Aws/SignatureV4.hs
+++ b/src/Aws/SignatureV4.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE CPP #-}
 {-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric #-}
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE TupleSections #-}
 
@@ -100,6 +101,7 @@
 
 import Control.Applicative
 import Control.Arrow hiding (left)
+import Control.DeepSeq
 import Control.Monad.IO.Class
 
 import Crypto.Hash
@@ -121,6 +123,8 @@
 import Data.Time.Clock (UTCTime, getCurrentTime, utctDay)
 import Data.Typeable
 
+import GHC.Generics
+
 import qualified Test.QuickCheck as Q
 import Test.QuickCheck.Instances ()
 
@@ -185,7 +189,7 @@
     -- ^ used internally for caching the singing key
     , sigV4SecurityToken :: Maybe B.ByteString
     }
-    deriving (Typeable)
+    deriving (Typeable, Generic)
 
 newCredentials
     :: (Functor m, MonadIO m)
@@ -204,8 +208,10 @@
 type UriQuery = HTTP.QueryText
 
 newtype CanonicalUri = CanonicalUri B8.ByteString
-    deriving (Show, Read, Eq, Ord, Typeable)
+    deriving (Show, Read, Eq, Ord, Typeable, Generic)
 
+instance NFData CanonicalUri
+
 -- | Compute canonical URI
 --
 -- <http://docs.aws.amazon.com/general/1.0/gr/sigv4-create-canonical-request.html>
@@ -256,8 +262,10 @@
 -- Canonical Headers
 
 newtype CanonicalHeaders = CanonicalHeaders B8.ByteString
-    deriving (Show, Read, Eq, Ord, Typeable)
+    deriving (Show, Read, Eq, Ord, Typeable, Generic)
 
+instance NFData CanonicalHeaders
+
 -- | Compute canonical HTTP headers
 --
 -- <http://docs.aws.amazon.com/general/1.0/gr/sigv4-create-canonical-request.html>
@@ -366,8 +374,10 @@
 -- Signed Headers
 
 newtype SignedHeaders = SignedHeaders B8.ByteString
-    deriving (Show, Read, Eq, Ord, Typeable)
+    deriving (Show, Read, Eq, Ord, Typeable, Generic)
 
+instance NFData SignedHeaders
+
 -- | Compute signed headers
 --
 -- <http://docs.aws.amazon.com/general/1.0/gr/sigv4-create-canonical-request.html>
@@ -383,8 +393,10 @@
 -- Canonical Request
 
 newtype CanonicalRequest = CanonicalRequest B8.ByteString
-    deriving (Show, Read, Eq, Ord, Typeable)
+    deriving (Show, Read, Eq, Ord, Typeable, Generic)
 
+instance NFData CanonicalRequest
+
 -- | Create Canonical Request for AWS Signature Version 4
 --
 -- <http://docs.aws.amazon.com/general/1.0/gr/sigv4-create-canonical-request.html>
@@ -417,8 +429,10 @@
 -- The hash is stored hex encoded
 --
 newtype HashedCanonicalRequest = HashedCanonicalRequest B8.ByteString
-    deriving (Show, Read, Eq, Ord, Typeable)
+    deriving (Show, Read, Eq, Ord, Typeable, Generic)
 
+instance NFData HashedCanonicalRequest
+
 hashedCanonicalRequest :: CanonicalRequest -> HashedCanonicalRequest
 hashedCanonicalRequest (CanonicalRequest r) = HashedCanonicalRequest
     $ signingHash16 r
@@ -431,8 +445,10 @@
     , credentialScopeRegion :: !Region
     , credentialScopeService :: !ServiceNamespace
     }
-    deriving (Show, Read, Typeable)
+    deriving (Show, Read, Typeable, Generic)
 
+instance NFData CredentialScope
+
 instance Eq CredentialScope where
     CredentialScope a0 b0 c0 == CredentialScope a1 b1 c1 =
         utctDay a0 == utctDay a1
@@ -487,8 +503,10 @@
 -- String to Sign
 
 newtype StringToSign = StringToSign B8.ByteString
-    deriving (Show, Read, Eq, Ord, Typeable)
+    deriving (Show, Read, Eq, Ord, Typeable, Generic)
 
+instance NFData StringToSign
+
 -- | Create the String to Sign for AWS Signature Version 4
 --
 -- <http://docs.aws.amazon.com/general/1.0/gr/sigv4-create-string-to-sign.html>
@@ -517,8 +535,10 @@
 -- to the same service and the region till 00:00:00 UTC time.
 --
 newtype SigningKey = SigningKey B.ByteString
-    deriving (Show, Read, Eq, Ord, Typeable)
+    deriving (Show, Read, Eq, Ord, Typeable, Generic)
 
+instance NFData SigningKey
+
 -- | Derive the signing key
 --
 -- <http://docs.aws.amazon.com/general/1.0/gr/sigv4-calculate-signature.html>
@@ -543,7 +563,9 @@
 -- Request Signature
 
 newtype Signature = Signature B8.ByteString
-    deriving (Show, Read, Eq, Ord, Typeable)
+    deriving (Show, Read, Eq, Ord, Typeable, Generic)
+
+instance NFData Signature
 
 -- | Compute an AWS Signature Version 4
 --
