diff --git a/opentok.cabal b/opentok.cabal
--- a/opentok.cabal
+++ b/opentok.cabal
@@ -1,5 +1,5 @@
 name: opentok
-version: 0.0.2
+version: 0.0.3
 synopsis: An OpenTok SDK for Haskell
 description:
   .
diff --git a/src/OpenTok.hs b/src/OpenTok.hs
--- a/src/OpenTok.hs
+++ b/src/OpenTok.hs
@@ -33,7 +33,7 @@
 }
 
 instance Show OpenTok where
-  show ot = "OpenTok { APIKey: " <> apiKey ot <> ", Secret: *_*_*_*_*_*  }"
+  show ot = "OpenTok { APIKey: " <> OpenTok.apiKey ot <> ", Secret: *_*_*_*_*_*  }"
 
 -- | Get an OpenTok project
 --
@@ -42,7 +42,7 @@
 opentok :: APIKey -> APISecret -> OpenTok
 opentok k s = OpenTok k s (OpenTok.Client.Client k s)
 
--- | Generate a new OpenTok Session
+-- | Create a new OpenTok Session
 --
 -- @
 -- options = sessionOpts { mediaMode = Routed }
@@ -60,7 +60,7 @@
 -- @
 --
 generateToken :: OpenTok -> SessionId -> TokenOptions -> IO (Either OTError Token)
-generateToken ot = OpenTok.Token.generate (apiKey ot) (secret ot)
+generateToken ot = OpenTok.Token.generate (OpenTok.apiKey ot) (OpenTok.secret ot)
 
 -- | Start recording an archive of an OpenTok session
 --
@@ -72,7 +72,7 @@
 
 -- | Stop recording an archive of an OpenTok session
 --
--- > stopArchive ot archiveOpts { sessionId = "your_session_id" }
+-- > stopArchive ot "your_session_id"
 --
 stopArchive :: OpenTok -> ArchiveId -> IO (Either OTError Archive)
 stopArchive ot = OpenTok.Archive.stop (client ot)
diff --git a/src/OpenTok/Archive.hs b/src/OpenTok/Archive.hs
--- a/src/OpenTok/Archive.hs
+++ b/src/OpenTok/Archive.hs
@@ -5,7 +5,9 @@
 {-# LANGUAGE TemplateHaskell #-}
 
 module OpenTok.Archive
-  ( ArchiveOptions
+  ( OutputMode(Composed, Individual)
+  , ArchiveResolution(SD, HD)
+  , ArchiveOptions
     ( _hasAudio
     , _hasAudio
     , _name
@@ -13,7 +15,8 @@
     , _resolution
     , _sessionId
     )
-  , ArchiveResolution(SD, HD)
+  , archiveOpts
+  , ArchiveStatus(Available, Expired, Failed, Paused, Started, Stopped, Uploaded)
   , Archive
     ( id
     , status
@@ -31,8 +34,6 @@
     , duration
     , sessionId
     )
-  , OutputMode(Composed, Individual)
-  , archiveOpts
   , start
   , stop
   )
@@ -139,6 +140,8 @@
 data ArchiveStatus = Available | Expired | Failed | Paused | Started | Stopped | Uploaded deriving (Data, Generic, Typeable)
 deriveJSON defaultOptions { constructorTagModifier = strToLower } ''ArchiveStatus
 
+instance Show ArchiveStatus where
+  show = strToLower . showConstr . toConstr
 
 {-|
 
diff --git a/src/OpenTok/Session.hs b/src/OpenTok/Session.hs
--- a/src/OpenTok/Session.hs
+++ b/src/OpenTok/Session.hs
@@ -4,11 +4,13 @@
 {-# LANGUAGE TemplateHaskell #-}
 
 module OpenTok.Session
-  ( Session
-  , SessionOptions(_mediaMode, _archiveMode, _location)
+  (
+    ArchiveMode(Manual, Always)
   , MediaMode(Relayed, Routed)
-  , create
+  , SessionOptions(_mediaMode, _archiveMode, _location)
+  , Session(apiKey, sessionId, mediaMode, archiveMode)
   , sessionOpts
+  , create
   )
 where
 
@@ -64,18 +66,35 @@
   toJSON = genericToJSON defaultOptions
     { omitNothingFields = True, fieldLabelModifier = drop 1 }
 
--- | Default options for Session creation
---
--- mediaMode: 'Relayed'
---
--- archiveMode: 'Manual'
---
--- location: Nothing
---
+{-|
+Default Session options
+
+@
+SessionOptions
+  { _mediaMode: 'Relayed'
+  , _archiveMode: 'Manual'
+  , _location: Nothing
+}
+@
+
+-}
 sessionOpts :: SessionOptions
 sessionOpts = SessionOptions Relayed Manual Nothing
 
--- | Represents an OpenTok Session
+{-|
+
+An OpenTok Session
+
+@
+Session {
+  apiKey :: 'String',
+  sessionId :: 'String',
+  mediaMode :: 'MediaMode',
+  archiveMode :: 'ArchiveMode'
+}
+@
+
+-}
 data Session = Session {
   apiKey :: String,
   sessionId :: String,
diff --git a/src/OpenTok/Token.hs b/src/OpenTok/Token.hs
--- a/src/OpenTok/Token.hs
+++ b/src/OpenTok/Token.hs
@@ -31,13 +31,13 @@
 import           OpenTok.Util
 import           OpenTok.Types
 
--- | Information on user roles can be found at https://tokbox.com/developer/guides/create-token/
 data Role = Subscriber | Publisher | Moderator
 instance Show Role where
   show Subscriber = "subscriber"
   show Publisher = "publisher"
   show Moderator = "moderator"
 
+-- | Information on user roles and other options can be found at https://tokbox.com/developer/guides/create-token/
 data TokenOptions = TokenOptions {
   _role :: Role,
   _expireTime :: Maybe UTCTime,
