diff --git a/clientsession.cabal b/clientsession.cabal
--- a/clientsession.cabal
+++ b/clientsession.cabal
@@ -1,5 +1,5 @@
 name:            clientsession
-version:         0.8.0.1
+version:         0.8.0.2
 license:         BSD3
 license-file:    LICENSE
 author:          Michael Snoyman <michael@snoyman.com>, Felipe Lessa <felipe.lessa@gmail.com>
@@ -41,7 +41,7 @@
     build-depends:   base
                    , bytestring          >= 0.9
                    , cryptocipher        >= 0.2.5
-                   , hspec               >= 1.2
+                   , hspec               >= 1.3
                    , QuickCheck          >= 2
                    , HUnit
                    , transformers
diff --git a/src/Web/ClientSession.hs b/src/Web/ClientSession.hs
--- a/src/Web/ClientSession.hs
+++ b/src/Web/ClientSession.hs
@@ -1,6 +1,7 @@
 {-# LANGUAGE FlexibleContexts #-}
 {-# LANGUAGE ForeignFunctionInterface #-}
 {-# LANGUAGE TemplateHaskell #-}
+{-# LANGUAGE CPP #-}
 ---------------------------------------------------------
 --
 -- |
@@ -268,7 +269,11 @@
 aesRNG = do
   (bs, count) <-
       I.atomicModifyIORef aesRef $ \(ASt rng count) ->
+#if MIN_VERSION_cprng_aes(0, 3, 2)
+          let (bs', rng') = genRandomBytes 16 rng
+#else
           let (bs', rng') = genRandomBytes rng 16
+#endif
           in (ASt rng' (succ count), (bs', count))
   when (count == threshold) $ void $ forkIO aesReseed
   either (error . show) return $ decode bs
diff --git a/tests/runtests.hs b/tests/runtests.hs
--- a/tests/runtests.hs
+++ b/tests/runtests.hs
@@ -1,11 +1,9 @@
 {-# LANGUAGE FlexibleInstances #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# OPTIONS_GHC -fno-warn-orphans #-}
-import Test.HUnit
-import Test.Hspec.Monadic
-import Test.QuickCheck hiding (property)
-import Test.Hspec.QuickCheck
-import Test.Hspec.HUnit ()
+import Test.HUnit (assertBool)
+import Test.Hspec
+import Test.QuickCheck
 import Control.Monad (replicateM)
 
 import qualified Data.ByteString as S
@@ -51,16 +49,16 @@
 propAESChanges :: MyKey -> MyIV -> S.ByteString -> Bool
 propAESChanges (MyKey key) (MyIV iv) bs = encrypt key iv bs /= bs
 
-caseSpecific :: Assertion
+caseSpecific :: Expectation
 caseSpecific = do
     let s = S8.pack $ show [("lo\ENQ\143XAq","\DC2\207\226\DC1;.z56|\203\222"),("\USnu#\139\ETXB\201 ","l"),("\RS\b,zM2U\184\191F)\EOT\220S\NUL","O\\\GSd\247\246\n\EOT\SYN\182U2G"),("\219\NAK\217\CAN\252","ym\STX\188\232?\\\145"),("\239k","\vRZP\a\DC2F>"),("\FS\180P &\RS\174zSL\\?@","p\170\237vZ|\GS>\SYNk\176n\r"),("","\199D\DC3\200m)"),("6\152tVhB\246)9","\ENQdfU\SUB"),("I\ACK\181\NUL","\129\&6s\130q\US)oR1\197\FSp\US\SYN0"),("\183\200<\250","\211  \131g4\207N\155"),("\248O6k\CANK\135\234.","`\205!+&Z&9\DLE\244\214HP\SI\161"),("\"I'\ACK\149 \CAN\197","\141N\201\SO\204\\o.\128\148")]
     key <- getDefaultKey
     iv <- randomIV
-    Just s @=? decrypt key (encrypt key iv s)
+    decrypt key (encrypt key iv s) `shouldBe` Just s
     let s' = S.concat $ replicate 500 s
-    Just s' @=? decrypt key (encrypt key iv s')
+    decrypt key (encrypt key iv s') `shouldBe` Just s'
 
-caseRandomIV :: Assertion
+caseRandomIV :: Expectation
 caseRandomIV = do
     evalStateT (replicateM_ 10000 go) Set.empty
   where
