diff --git a/Network/TLS/Receiving.hs b/Network/TLS/Receiving.hs
--- a/Network/TLS/Receiving.hs
+++ b/Network/TLS/Receiving.hs
@@ -31,8 +31,6 @@
 import Network.TLS.Crypto
 import Data.Certificate.X509
 
-import qualified Crypto.Cipher.RSA as RSA
-
 returnEither :: Either TLSError a -> TLSSt a
 returnEither (Left err) = throwError err
 returnEither (Right a)  = return a
@@ -253,7 +251,5 @@
 processCertificates certs = do
 	let (X509 mainCert _ _ _ _) = head certs
 	case certPubKey mainCert of
-		PubKeyRSA (lm, m, e) -> do
-			let pk = PubRSA (RSA.PublicKey { RSA.public_sz = fromIntegral lm, RSA.public_n = m, RSA.public_e = e })
-			setPublicKey pk
-		_                    -> return ()
+		PubKeyRSA pubkey -> setPublicKey (PubRSA pubkey)
+		_                -> return ()
diff --git a/Tests.hs b/Tests.hs
--- a/Tests.hs
+++ b/Tests.hs
@@ -2,6 +2,8 @@
 
 import Test.QuickCheck
 import Test.QuickCheck.Test
+import Test.Framework (defaultMain, testGroup)
+import Test.Framework.Providers.QuickCheck2 (testProperty)
 
 --import Tests.Certificate
 
@@ -13,7 +15,7 @@
 import Network.TLS.Struct
 import Network.TLS.Packet
 import Control.Monad
-import Control.Applicative ((<$>))
+import Control.Applicative
 import System.IO
 
 genByteString :: Int -> Gen B.ByteString
@@ -39,16 +41,16 @@
 #endif
 
 instance Arbitrary Header where
-	arbitrary = liftM3 Header arbitrary arbitrary arbitrary
+	arbitrary = Header <$> arbitrary <*> arbitrary <*> arbitrary
 
 instance Arbitrary ClientRandom where
-	arbitrary = liftM ClientRandom (genByteString 32)
+	arbitrary = ClientRandom <$> (genByteString 32)
 
 instance Arbitrary ServerRandom where
-	arbitrary = liftM ServerRandom (genByteString 32)
+	arbitrary = ServerRandom <$> (genByteString 32)
 
 instance Arbitrary ClientKeyData where
-	arbitrary = liftM ClientKeyData (genByteString 46)
+	arbitrary = ClientKeyData <$> (genByteString 46)
 
 instance Arbitrary Session where
 	arbitrary = do
@@ -70,21 +72,30 @@
 		, CertificateType_RSA_Ephemeral_DH, CertificateType_DSS_Ephemeral_DH
 		, CertificateType_fortezza_dms ]
 
--- we hardcode the pubkey for generated X509. at later stage this will be generated as well.
-pubkey = PubKeyRSA (1,2,3)
-
 instance Arbitrary Handshake where
 	arbitrary = oneof
-		[ liftM6 ClientHello arbitrary arbitrary arbitrary arbitraryCiphersIDs arbitraryCompressionIDs (return [])
-		, liftM6 ServerHello arbitrary arbitrary arbitrary arbitrary arbitrary (return [])
+		[ ClientHello
+			<$> arbitrary
+			<*> arbitrary
+			<*> arbitrary
+			<*> arbitraryCiphersIDs
+			<*> arbitraryCompressionIDs
+			<*> (return [])
+		, ServerHello
+			<$> arbitrary
+			<*> arbitrary
+			<*> arbitrary
+			<*> arbitrary
+			<*> arbitrary
+			<*> (return [])
 		--, liftM Certificates (resize 2 $ listOf $ arbitraryX509 pubkey)
-		, return HelloRequest
-		, return ServerHelloDone
-		, liftM2 ClientKeyXchg arbitrary arbitrary
+		, pure HelloRequest
+		, pure ServerHelloDone
+		, ClientKeyXchg <$> arbitrary <*> arbitrary
 		--, liftM  ServerKeyXchg
 		--, liftM3 CertRequest arbitrary (return Nothing) (return [])
 		--, liftM CertVerify (return [])
-		, liftM Finished (genByteString 12)
+		, Finished <$> (genByteString 12)
 		]
 
 {- quickcheck property -}
@@ -95,18 +106,9 @@
 		decodeHs b = either (Left . id) (uncurry (decodeHandshake cp) . head) $ decodeHandshakes b
 		cp = CurrentParams { cParamsVersion = TLS10, cParamsKeyXchgType = CipherKeyExchange_RSA }
 
-myQuickCheckArgs = stdArgs
-	{ replay     = Nothing
-	, maxSuccess = 500
-	, maxDiscard = 2000
-	, maxSize    = 500
-	}
-
-run_test n t =
-	putStr ("  " ++ n ++ " ... ") >> hFlush stdout >> quickCheckWith myQuickCheckArgs t
-
-liftM6 f m1 m2 m3 m4 m5 m6 = do { x1 <- m1; x2 <- m2; x3 <- m3; x4 <- m4; x5 <- m5; x6 <- m6; return (f x1 x2 x3 x4 x5 x6) }
+tests = testGroup "Marshalling"
+	[ testProperty "Header" prop_header_marshalling_id
+	, testProperty "Handshake" prop_handshake_marshalling_id
+	]
 
-main = do
-	run_test "marshalling header = id" prop_header_marshalling_id
-	run_test "marshalling handshake = id" prop_handshake_marshalling_id
+main = defaultMain [ tests ]
diff --git a/tls.cabal b/tls.cabal
--- a/tls.cabal
+++ b/tls.cabal
@@ -1,5 +1,5 @@
 Name:                tls
-Version:             0.8.1
+Version:             0.8.2
 Description:
    Native Haskell TLS and SSL protocol implementation for server and client.
    .
@@ -41,8 +41,8 @@
                    , cereal >= 0.3
                    , bytestring
                    , crypto-api >= 0.5
-                   , cryptocipher >= 0.2.5
-                   , certificate >= 0.9.4 && < 1.0
+                   , cryptocipher >= 0.3.0
+                   , certificate >= 1.0.0 && < 1.1.0
   Exposed-modules:   Network.TLS
                      Network.TLS.Cipher
                      Network.TLS.Compression
@@ -66,11 +66,13 @@
   if flag(test)
     Buildable:       True
     Build-Depends:   base >= 3 && < 5
-                   , HUnit
                    , QuickCheck >= 2
+                   , test-framework
+                   , test-framework-quickcheck2
                    , bytestring
   else
     Buildable:       False
+  ghc-options:       -Wall -fhpc
 
 source-repository head
   type: git
