diff --git a/Network/TLS/State.hs b/Network/TLS/State.hs
--- a/Network/TLS/State.hs
+++ b/Network/TLS/State.hs
@@ -60,6 +60,7 @@
 import Network.TLS.Cipher
 import Network.TLS.MAC
 import qualified Data.ByteString as B
+import Control.Applicative ((<$>))
 import Control.Monad
 import Control.Monad.State
 import Control.Monad.Error
@@ -387,7 +388,7 @@
 updateHandshake :: MonadState TLSState m => String -> (TLSHandshakeState -> TLSHandshakeState) -> m ()
 updateHandshake n f = do
 	hasValidHandshake n
-	modify (\st -> st { stHandshake = maybe Nothing (Just . f) (stHandshake st) })
+	modify (\st -> st { stHandshake = f <$> stHandshake st })
 
 updateHandshakeDigest :: MonadState TLSState m => Bytes -> m ()
 updateHandshakeDigest content = updateHandshake "update digest" (\hs ->
diff --git a/tls.cabal b/tls.cabal
--- a/tls.cabal
+++ b/tls.cabal
@@ -1,13 +1,18 @@
 Name:                tls
-Version:             0.7.1
+Version:             0.7.2
 Description:
-   native TLS protocol implementation, focusing on purity and more type-checking.
+   Native Haskell TLS and SSL protocol implementation for server and client.
    .
-   Currently implement the SSL3.0, TLS1.0 and TLS1.1 protocol.
-   Not yet properly secure and missing some features.
-   Do not yet use as replacement to more mature implementation.
+   This provides a high-level implementation of a sensitive security protocol,
+   eliminating a common set of security issues through the use of the advanced
+   type system, high level constructions and common Haskell features.
    .
-   only RSA supported as Key exchange for now.
+   Currently implement the SSL3.0, TLS1.0 and TLS1.1 protocol,
+   with only RSA supported for Key Exchange.
+   .
+   Only core protocol available here, have a look at the
+   <http://hackage.haskell.org/package/tls-extra/> package for default
+   ciphers, compressions and certificates functions.
 License:             BSD3
 License-file:        LICENSE
 Copyright:           Vincent Hanquez <vincent@snarc.org>
