diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -44,8 +44,9 @@
 
 ```yaml
 extra-deps:
-- discord-haskell-1.1.3
 - emoji-0.1.0.2
+- discord-haskell-1.2.0
+    # check hackage for the most recent version
 ```
 
 In `project.cabal`
diff --git a/changelog.md b/changelog.md
--- a/changelog.md
+++ b/changelog.md
@@ -5,6 +5,16 @@
 ## master
 
 
+## 1.3.0
+
+[PixeLinc](https://github.com/aquarial/discord-haskell/pull/33) Add `DeleteSingleReaction` rest-request, Add GuildId to `ReactinInfo`, Add `MESSAGE_REACTION_REMOVE_EMOJI` gateway event
+
+`GetReactions` actually returns the User objects request
+
+Rename `Ban` to `GuildBan`
+
+Re-export UTCTime from `time` package
+
 ## 1.2.0
 
 [MDeltaX](https://github.com/aquarial/discord-haskell/pull/27) Fixed typo: depreciated --> deprecated
diff --git a/discord-haskell.cabal b/discord-haskell.cabal
--- a/discord-haskell.cabal
+++ b/discord-haskell.cabal
@@ -1,7 +1,7 @@
 cabal-version:       2.0
 name:                discord-haskell
 -- library version is also noted at src/Discord/Rest/Prelude.hs
-version:             1.2.0
+version:             1.3.0
 description:         Functions and data types to write discord bots.
                      Official discord docs <https://discordapp.com/developers/docs/reference>.
                      .
diff --git a/src/Discord.hs b/src/Discord.hs
--- a/src/Discord.hs
+++ b/src/Discord.hs
@@ -90,7 +90,7 @@
     Left (RestCallInternalNoParse _ _) -> libError "Couldn't parse GetCurrentUser"
     _ -> do me <- try (discordOnStart opts handle)
             case me of
-              Left (e :: SomeException) -> libError ("Your code threw an exception:\n\n" <> T.pack (show e))
+              Left (e :: SomeException) -> libError ("discordOnStart handler stopped on an exception:\n\n" <> T.pack (show e))
               Right _ -> loop
  where
    libError :: T.Text -> IO T.Text
@@ -107,7 +107,7 @@
                  action $ do me <- try (discordOnEvent opts handle event)
                              case me of
                                Left (e :: SomeException) -> writeChan (discordHandleLog handle)
-                                         ("Your code threw an exception:\n\n" <> T.pack (show e))
+                                         ("discord-haskell stopped on an exception:\n\n" <> T.pack (show e))
                                Right _ -> pure ()
                  loop
                Right (Left err) -> libError (T.pack (show err))
diff --git a/src/Discord/Internal/Rest/Channel.hs b/src/Discord/Internal/Rest/Channel.hs
--- a/src/Discord/Internal/Rest/Channel.hs
+++ b/src/Discord/Internal/Rest/Channel.hs
@@ -58,8 +58,10 @@
   DeleteOwnReaction       :: (ChannelId, MessageId) -> T.Text -> ChannelRequest ()
   -- | Remove a Reaction someone else added
   DeleteUserReaction      :: (ChannelId, MessageId) -> UserId -> T.Text -> ChannelRequest ()
+  -- | Deletes all reactions of a single emoji on a message
+  DeleteSingleReaction    :: (ChannelId, MessageId) -> T.Text -> ChannelRequest ()
   -- | List of users that reacted with this emoji
-  GetReactions            :: (ChannelId, MessageId) -> T.Text -> (Int, ReactionTiming) -> ChannelRequest ()
+  GetReactions            :: (ChannelId, MessageId) -> T.Text -> (Int, ReactionTiming) -> ChannelRequest [User]
   -- | Delete all reactions on a message
   DeleteAllReactions      :: (ChannelId, MessageId) -> ChannelRequest ()
   -- | Edits a message content.
@@ -94,11 +96,13 @@
 -- | Data constructor for GetReaction requests
 data ReactionTiming = BeforeReaction MessageId
                     | AfterReaction MessageId
+                    | LatestReaction
 
 reactionTimingToQuery :: ReactionTiming -> R.Option 'R.Https
 reactionTimingToQuery t = case t of
   (BeforeReaction snow) -> "before" R.=: show snow
   (AfterReaction snow) -> "after"  R.=: show snow
+  (LatestReaction) -> mempty
 
 -- | Data constructor for GetChannelMessages requests. See <https://discordapp.com/developers/docs/resources/channel#get-channel-messages>
 data MessageTiming = AroundMessage MessageId
@@ -186,6 +190,7 @@
   (CreateReaction (chan, _) _) ->     "add_react " <> show chan
   (DeleteOwnReaction (chan, _) _) ->      "react " <> show chan
   (DeleteUserReaction (chan, _) _ _) ->   "react " <> show chan
+  (DeleteSingleReaction (chan, _) _) ->   "react " <> show chan
   (GetReactions (chan, _) _ _) ->         "react " <> show chan
   (DeleteAllReactions (chan, _)) ->       "react " <> show chan
   (EditMessage (chan, _) _ _) ->        "get_msg " <> show chan
@@ -268,6 +273,10 @@
   (DeleteUserReaction (chan, msgid) uID emoji) ->
       let e = cleanupEmoji emoji
       in Delete (channels // chan /: "messages" // msgid /: "reactions" /: e // uID ) mempty
+
+  (DeleteSingleReaction (chan, msgid) emoji) ->
+    let e = cleanupEmoji emoji
+    in Delete (channels // chan /: "messages" // msgid /: "reactions" /: e) mempty
 
   (GetReactions (chan, msgid) emoji (n, timing)) ->
       let e = cleanupEmoji emoji
diff --git a/src/Discord/Internal/Rest/Guild.hs b/src/Discord/Internal/Rest/Guild.hs
--- a/src/Discord/Internal/Rest/Guild.hs
+++ b/src/Discord/Internal/Rest/Guild.hs
@@ -76,10 +76,10 @@
   RemoveGuildMember        :: GuildId -> UserId -> GuildRequest ()
   -- | Returns a list of 'Ban' objects for users that are banned from this guild. Requires the
   --   'BAN_MEMBERS' permission
-  GetGuildBans             :: GuildId -> GuildRequest [Ban]
+  GetGuildBans             :: GuildId -> GuildRequest [GuildBan]
   -- | Returns a 'Ban' object for the user banned from this guild. Requires the
   --   'BAN_MEMBERS' permission
-  GetGuildBan              :: GuildId -> UserId -> GuildRequest Ban
+  GetGuildBan              :: GuildId -> UserId -> GuildRequest GuildBan
   -- | Create a guild ban, and optionally Delete previous messages sent by the banned
   --   user. Requires the 'BAN_MEMBERS' permission. Fires a Guild Ban Add 'Event'.
   CreateGuildBan           :: GuildId -> UserId -> CreateGuildBanOpts -> GuildRequest ()
diff --git a/src/Discord/Internal/Rest/Prelude.hs b/src/Discord/Internal/Rest/Prelude.hs
--- a/src/Discord/Internal/Rest/Prelude.hs
+++ b/src/Discord/Internal/Rest/Prelude.hs
@@ -25,7 +25,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, 1.2.0)"
+  agent = "DiscordBot (https://github.com/aquarial/discord-haskell, 1.3.0)"
 
 -- Append to an URL
 infixl 5 //
diff --git a/src/Discord/Internal/Types.hs b/src/Discord/Internal/Types.hs
--- a/src/Discord/Internal/Types.hs
+++ b/src/Discord/Internal/Types.hs
@@ -7,6 +7,7 @@
   , module Discord.Internal.Types.Gateway
   , module Discord.Internal.Types.Guild
   , module Data.Aeson
+  , module Data.Time.Clock
   ) where
 
 import Discord.Internal.Types.Channel
@@ -16,3 +17,4 @@
 import Discord.Internal.Types.Prelude
 
 import Data.Aeson (Object)
+import Data.Time.Clock (UTCTime(..))
diff --git a/src/Discord/Internal/Types/Events.hs b/src/Discord/Internal/Types/Events.hs
--- a/src/Discord/Internal/Types/Events.hs
+++ b/src/Discord/Internal/Types/Events.hs
@@ -47,6 +47,7 @@
   | MessageReactionAdd      ReactionInfo
   | MessageReactionRemove   ReactionInfo
   | MessageReactionRemoveAll ChannelId MessageId
+  | MessageReactionRemoveEmoji ReactionRemoveInfo
   | PresenceUpdate          PresenceInfo
   | TypingStart             TypingInfo
   | UserUpdate              User
@@ -57,6 +58,7 @@
 
 data ReactionInfo = ReactionInfo
   { reactionUserId    :: UserId
+  , reactionGuildId   :: Maybe GuildId
   , reactionChannelId :: ChannelId
   , reactionMessageId :: MessageId
   , reactionEmoji     :: Emoji
@@ -64,11 +66,26 @@
 
 instance FromJSON ReactionInfo where
   parseJSON = withObject "ReactionInfo" $ \o ->
-    ReactionInfo <$> o .: "user_id"
-                 <*> o .: "channel_id"
-                 <*> o .: "message_id"
-                 <*> o .: "emoji"
+    ReactionInfo <$> o .:  "user_id"
+                 <*> o .:? "guild_id"
+                 <*> o .:  "channel_id"
+                 <*> o .:  "message_id"
+                 <*> o .:  "emoji"
 
+data ReactionRemoveInfo  = ReactionRemoveInfo
+  { reactionRemoveChannelId :: ChannelId
+  , reactionRemoveGuildId   :: GuildId
+  , reactionRemoveMessageId :: MessageId
+  , reactionRemoveEmoji     :: Emoji
+  } deriving (Show, Eq, Ord)
+
+instance FromJSON ReactionRemoveInfo where
+  parseJSON = withObject "ReactionRemoveInfo" $ \o ->
+    ReactionRemoveInfo <$> o .:  "guild_id"
+                       <*> o .:  "channel_id"
+                       <*> o .:  "message_id"
+                       <*> o .:  "emoji"
+
 data PresenceInfo = PresenceInfo
   { presenceUserId  :: UserId
   , presenceRoles   :: [RoleId]
@@ -147,6 +164,7 @@
     "MESSAGE_REACTION_REMOVE"   -> MessageReactionRemove <$> reparse o
     "MESSAGE_REACTION_REMOVE_ALL" -> MessageReactionRemoveAll <$> o .: "channel_id"
                                                               <*> o .: "message_id"
+    "MESSAGE_REACTION_REMOVE_EMOJI" -> MessageReactionRemoveEmoji <$> reparse o
     "PRESENCE_UPDATE"           -> PresenceUpdate            <$> reparse o
     "TYPING_START"              -> TypingStart               <$> reparse o
     "USER_UPDATE"               -> UserUpdate                <$> reparse o
diff --git a/src/Discord/Internal/Types/Guild.hs b/src/Discord/Internal/Types/Guild.hs
--- a/src/Discord/Internal/Types/Guild.hs
+++ b/src/Discord/Internal/Types/Guild.hs
@@ -184,13 +184,13 @@
                 <*> o .: "custom"
 
 -- | Info about a Ban
-data Ban = Ban
-      { banReason  :: T.Text
-      , banUser    :: User
+data GuildBan = GuildBan
+      { guildBanReason  :: T.Text
+      , guildBanUser    :: User
       } deriving (Show, Eq, Ord)
 
-instance FromJSON Ban where
-  parseJSON = withObject "Ban" $ \o -> Ban <$> o .: "reason" <*> o .: "user"
+instance FromJSON GuildBan where
+  parseJSON = withObject "GuildBan" $ \o -> GuildBan <$> o .: "reason" <*> o .: "user"
 
 -- | Represents a code to add a user to a guild
 data Invite = Invite
