diff --git a/discord-haskell.cabal b/discord-haskell.cabal
--- a/discord-haskell.cabal
+++ b/discord-haskell.cabal
@@ -1,6 +1,6 @@
 name:                discord-haskell
 -- library version is also noted at src/Discord/Rest/Prelude.hs
-version:             0.7.0
+version:             0.7.1
 synopsis:            Write bots for Discord in Haskell
 description:         Functions and data types to write discord bots.
                      Official discord docs <https://discordapp.com/developers/docs/reference>.
diff --git a/src/Discord/Gateway/EventLoop.hs b/src/Discord/Gateway/EventLoop.hs
--- a/src/Discord/Gateway/EventLoop.hs
+++ b/src/Discord/Gateway/EventLoop.hs
@@ -174,8 +174,9 @@
     eitherPayload <- getPayloadTimeout conn interval log
     case eitherPayload :: Either ConnectionException GatewayReceivable of
       Left (CloseRequest code str) -> case code of
-          -- see discord documentation on gateway close event codes
+          -- see Discord and MDN documentation on gateway close event codes
           1000 -> ConnReconnect auth seshID <$> readIORef seqKey
+          1001 -> ConnReconnect auth seshID <$> readIORef seqKey
           4000 -> ConnReconnect auth seshID <$> readIORef seqKey
           4006 -> pure ConnStart
           4007 -> ConnReconnect auth seshID <$> readIORef seqKey
diff --git a/src/Discord/Rest/Prelude.hs b/src/Discord/Rest/Prelude.hs
--- a/src/Discord/Rest/Prelude.hs
+++ b/src/Discord/Rest/Prelude.hs
@@ -24,7 +24,7 @@
   where
   -- | https://discordapp.com/developers/docs/reference#user-agent
   -- Second place where the library version is noted
-  agent = "DiscordBot (https://github.com/aquarial/discord-haskell, 0.7.0)"
+  agent = "DiscordBot (https://github.com/aquarial/discord-haskell, 0.7.1)"
 
 -- Append to an URL
 infixl 5 //
diff --git a/src/Discord/Types/Gateway.hs b/src/Discord/Types/Gateway.hs
--- a/src/Discord/Types/Gateway.hs
+++ b/src/Discord/Types/Gateway.hs
@@ -40,9 +40,9 @@
   deriving (Show)
 
 data RequestGuildMembersOpts = RequestGuildMembersOpts
-                             { requestGuildMemersGuildId :: Snowflake
-                             , requestGuildMemersSearchQuery :: T.Text
-                             , requestGuildMemersLimit :: Integer }
+                             { requestGuildMembersGuildId :: Snowflake
+                             , requestGuildMembersSearchQuery :: T.Text
+                             , requestGuildMembersLimit :: Integer }
   deriving (Show)
 
 data UpdateStatusVoiceOpts = UpdateStatusVoiceOpts
@@ -55,20 +55,32 @@
 
 data UpdateStatusOpts = UpdateStatusOpts
                       { updateStatusSince :: Maybe UTCTime
-                      -- todo , updateStatusGame :: Activity
-                      , updateStatusNewStatus :: UpdateStatusTypes
+                      , updateStatusGame :: Maybe Activity
+                      , updateStatusNewStatus :: UpdateStatusType
                       , updateStatusAFK :: Bool
                       }
   deriving (Show)
 
-data UpdateStatusTypes = UpdateStatusOnline
-                       | UpdateStatusDoNotDisturb
-                       | UpdateStatusAwayFromKeyboard
-                       | UpdateStatusInvisibleOffline
-                       | UpdateStatusOffline
+data Activity = Activity
+              { activityName :: T.Text
+              , activityType :: ActivityType
+              , activityUrl :: Maybe T.Text
+              }
   deriving (Show)
 
-statusString :: UpdateStatusTypes -> T.Text
+data ActivityType = ActivityTypeGame
+                  | ActivityTypeStreaming
+                  | ActivityTypeListening
+  deriving (Enum, Show)
+
+data UpdateStatusType = UpdateStatusOnline
+                      | UpdateStatusDoNotDisturb
+                      | UpdateStatusAwayFromKeyboard
+                      | UpdateStatusInvisibleOffline
+                      | UpdateStatusOffline
+  deriving (Show)
+
+statusString :: UpdateStatusType -> T.Text
 statusString s = case s of
   UpdateStatusOnline -> "online"
   UpdateStatusDoNotDisturb -> "dnd"
@@ -124,17 +136,19 @@
       , "shard" .= shard
       ]
     ]
-  toJSON (UpdateStatus (UpdateStatusOpts since status afk)) = object [
+  toJSON (UpdateStatus (UpdateStatusOpts since game status afk)) = object [
       "op" .= (3 :: Int)
     , "d"  .= object [
         "since" .= case since of Nothing -> Nothing
                                  Just s -> Just ((10^6) * (utcTimeToPOSIXSeconds s))
       , "afk" .= afk
       , "status" .= statusString status
-      , "game" .= (Nothing :: Maybe ())
-      -- todo , "game"       .= object [
-      --        "name" .= game
-      --      ]
+      , "game" .= case game of Nothing -> Nothing
+                               Just a -> Just $ object [
+                                           "name" .= activityName a
+                                         , "type" .= (fromEnum $ activityType a :: Int)
+                                         , "url" .= activityUrl a
+                                         ]
       ]
     ]
   toJSON (UpdateStatusVoice (UpdateStatusVoiceOpts guild channel mute deaf)) =
diff --git a/src/Discord/Types/Prelude.hs b/src/Discord/Types/Prelude.hs
--- a/src/Discord/Types/Prelude.hs
+++ b/src/Discord/Types/Prelude.hs
@@ -23,9 +23,9 @@
 
 -- | Formats the token for use with the REST API
 formatAuth :: Auth -> Q.ByteString
-formatAuth (Auth token) = TE.encodeUtf8 $ bot <> token
-  where
-    bot = if "Bot " `T.isPrefixOf` token then "" else "Bot "
+formatAuth (Auth givenTok) = let token = T.strip givenTok
+                                 bot = if "Bot " `T.isPrefixOf` token then "" else "Bot "
+                             in TE.encodeUtf8 $ bot <> token
 
 -- | Get the raw token formatted for use with the websocket gateway
 authToken :: Auth -> T.Text
