diff --git a/gsasl.cabal b/gsasl.cabal
--- a/gsasl.cabal
+++ b/gsasl.cabal
@@ -1,9 +1,9 @@
 name: gsasl
-version: 0.3.5
+version: 0.3.6
 license: GPL-3
 license-file: license.txt
-author: John Millikin <jmillikin@gmail.com>
-maintainer: John Millikin <jmillikin@gmail.com>
+author: John Millikin <john@john-millikin.com>
+maintainer: John Millikin <john@john-millikin.com>
 build-type: Simple
 cabal-version: >= 1.6
 category: Network
@@ -15,13 +15,13 @@
 description:
 
 source-repository head
-  type: bazaar
-  location: https://john-millikin.com/branches/haskell-gsasl/0.3/
+  type: git
+  location: https://john-millikin.com/code/haskell-gsasl/
 
 source-repository this
-  type: bazaar
-  location: https://john-millikin.com/branches/haskell-gsasl/0.3/
-  tag: haskell-gsasl_0.3.5
+  type: git
+  location: https://john-millikin.com/code/haskell-gsasl/
+  tag: haskell-gsasl_0.3.6
 
 library
   ghc-options: -Wall -O2
diff --git a/lib/Network/Protocol/SASL/GNU.hs b/lib/Network/Protocol/SASL/GNU.hs
--- a/lib/Network/Protocol/SASL/GNU.hs
+++ b/lib/Network/Protocol/SASL/GNU.hs
@@ -77,8 +77,9 @@
 -- Imports {{{
 
 import           Prelude hiding (catch)
+import           Control.Applicative (Applicative, pure, (<*>))
 import qualified Control.Exception as E
-import           Control.Monad (when, unless)
+import           Control.Monad (ap, when, unless)
 import           Control.Monad.IO.Class (MonadIO, liftIO)
 import qualified Control.Monad.Trans.Reader as R
 import qualified Data.ByteString as B
@@ -142,6 +143,10 @@
 instance Functor SASL where
 	fmap f = SASL . fmap f . unSASL
 
+instance Applicative SASL where
+        pure = SASL . pure
+        (<*>) = ap
+
 instance Monad SASL where
 	return = SASL . return
 	(>>=) sasl f = SASL $ unSASL sasl >>= unSASL . f
@@ -248,6 +253,10 @@
 
 instance Functor Session where
 	fmap f = Session . fmap f . unSession
+
+instance Applicative Session where
+        pure = Session . pure
+        (<*>) = ap
 
 instance Monad Session where
 	return = Session . return
