diff --git a/NEWS b/NEWS
--- a/NEWS
+++ b/NEWS
@@ -3,6 +3,31 @@
 
 
 
+irc-fun-client 0.2.0.0 -- 2015-09-22
+====================================
+
+General, build and documentation changes:
+
+* (None)
+
+New APIs, features and enhancements:
+
+* New event constructor, NickChange
+* Channel logger can log nick changes
+* New nickname tracker function, changeNick
+
+Bug fixes:
+
+* (None)
+
+Dependency changes:
+
+* (None)
+
+
+
+
+
 irc-fun-client 0.1.1.0 -- 2015-09-10
 ====================================
 
diff --git a/irc-fun-client.cabal b/irc-fun-client.cabal
--- a/irc-fun-client.cabal
+++ b/irc-fun-client.cabal
@@ -1,5 +1,5 @@
 name:                irc-fun-client
-version:             0.1.1.0
+version:             0.2.0.0
 synopsis:            Another library for writing IRC clients.
 description:
   This is an IRC client library that uses @irc-fun-messages@ library package
diff --git a/src/Network/IRC/Fun/Client/ChannelLogger.hs b/src/Network/IRC/Fun/Client/ChannelLogger.hs
--- a/src/Network/IRC/Fun/Client/ChannelLogger.hs
+++ b/src/Network/IRC/Fun/Client/ChannelLogger.hs
@@ -113,4 +113,5 @@
     Part chan nick _reason               -> Just $ Leave nick chan
     Quit nick _reason                    -> Just $ LeaveAll nick
     ChannelMessage chan nick msg _notice -> Just $ Message nick chan msg
+    NickChange old new                   -> Just $ Rename old new
     _                                    -> Nothing
diff --git a/src/Network/IRC/Fun/Client/Events.hs b/src/Network/IRC/Fun/Client/Events.hs
--- a/src/Network/IRC/Fun/Client/Events.hs
+++ b/src/Network/IRC/Fun/Client/Events.hs
@@ -61,6 +61,8 @@
     -- yes, the client shouldn't send any automatic response. Parameters:
     -- Nickname, message, whether notice.
     | PrivateMessage String String Bool
+    -- | A user's nickname has changed. Parameters: Old nick, new nick.
+    | NickChange String String
     -- | Channel topic change. Parameterss: Channel, nickname of user who
     -- changed the topic, new topic content.
     | Topic String String String
@@ -79,6 +81,10 @@
 detectMessageEvents :: SpecificMessage -> Either String [Event]
 detectMessageEvents sm@(SpecificMessage mpref msg) =
     case msg of
+        NickMessage newnick                        ->
+            if null sender
+                then err
+                else one $ NickChange sender newnick
         QuitMessage reason                         ->
             if null sender
                 then err
diff --git a/src/Network/IRC/Fun/Client/NickTracker.hs b/src/Network/IRC/Fun/Client/NickTracker.hs
--- a/src/Network/IRC/Fun/Client/NickTracker.hs
+++ b/src/Network/IRC/Fun/Client/NickTracker.hs
@@ -14,7 +14,7 @@
  -}
 
 -- | Using the tools provided here, you can track which users are members of
--- which channels. This functionality has a veriety of uses, e.g. displaying
+-- which channels. This functionality has a variety of uses, e.g. displaying
 -- user lists in client UI and logging/displaying quit messages in the correct
 -- channel logs/buffers.
 module Network.IRC.Fun.Client.NickTracker
@@ -27,6 +27,7 @@
     , newNetwork
     , addMember
     , addToChannel
+    , changeNick
     , addChannel
     , removeMember
     , removeFromChannel
@@ -87,6 +88,17 @@
             Just (ChannelTracker nicks) ->
                 let ct = ChannelTracker $ S.insert nick nicks
                 in  M.insert chan ct chans
+
+-- | Record a nickname change. Remove old nickname from the channels in which
+-- it's present, and add the new nickname to them.
+changeNick :: NickName -> NickName -> NetworkTracker -> NetworkTracker
+changeNick old new (NetworkTracker cts) = NetworkTracker $ f cts
+    where
+    f chans =
+        let chansP = M.filter (old `isMemberOf`) chans
+            chansR = M.map (removeMember old) chansP
+            chansN = M.map (addMember new) chansR
+        in  chansN `M.union` chans
 
 -- | Record a channel with the given present nicknames.
 addChannel :: ChannelName -> [NickName] -> NetworkTracker -> NetworkTracker
