diff --git a/include/AvatarProvider.h b/include/AvatarProvider.h
index a58ef0b7e6b7ecea65f25019efe2acb04a8d7c13..906f2593a7d7dcacabdccb508e02bd9960c0f4ed 100644
--- a/include/AvatarProvider.h
+++ b/include/AvatarProvider.h
@@ -24,6 +24,12 @@
 class MatrixClient;
 class TimelineItem;
 
+struct AvatarData
+{
+        QImage img;
+        QUrl url;
+};
+
 class AvatarProvider : public QObject
 {
         Q_OBJECT
@@ -39,8 +45,8 @@ private:
         static void updateAvatar(const QString &uid, const QImage &img);
 
         static QSharedPointer<MatrixClient> client_;
-        static QMap<QString, QList<TimelineItem *>> toBeResolved_;
 
-        static QMap<QString, QImage> userAvatars_;
-        static QMap<QString, QUrl> avatarUrls_;
+        using UserID = QString;
+        static QMap<UserID, AvatarData> avatars_;
+        static QMap<UserID, QList<TimelineItem *>> toBeResolved_;
 };
diff --git a/src/AvatarProvider.cc b/src/AvatarProvider.cc
index ab938cb153ca6664eb5058f4062622003df7153e..7e8c9e4973133fd7049124d4227c3fc2f359e3e8 100644
--- a/src/AvatarProvider.cc
+++ b/src/AvatarProvider.cc
@@ -21,8 +21,7 @@
 
 QSharedPointer<MatrixClient> AvatarProvider::client_;
 
-QMap<QString, QImage> AvatarProvider::userAvatars_;
-QMap<QString, QUrl> AvatarProvider::avatarUrls_;
+QMap<QString, AvatarData> AvatarProvider::avatars_;
 QMap<QString, QList<TimelineItem *>> AvatarProvider::toBeResolved_;
 
 void
@@ -46,45 +45,50 @@ AvatarProvider::updateAvatar(const QString &uid, const QImage &img)
                 toBeResolved_.remove(uid);
         }
 
-        userAvatars_.insert(uid, img);
+        auto avatarData = avatars_[uid];
+        avatarData.img  = img;
+
+        avatars_.insert(uid, avatarData);
 }
 
 void
 AvatarProvider::resolve(const QString &userId, TimelineItem *item)
 {
-        if (userAvatars_.contains(userId)) {
-                auto img = userAvatars_[userId];
+        if (!avatars_.contains(userId))
+                return;
 
-                item->setUserAvatar(img);
+        auto img = avatars_[userId].img;
 
+        if (!img.isNull()) {
+                item->setUserAvatar(img);
                 return;
         }
 
-        if (avatarUrls_.contains(userId)) {
-                // Add the current timeline item to the waiting list for this avatar.
-                if (!toBeResolved_.contains(userId)) {
-                        client_->fetchUserAvatar(userId, avatarUrls_[userId]);
+        // Add the current timeline item to the waiting list for this avatar.
+        if (!toBeResolved_.contains(userId)) {
+                client_->fetchUserAvatar(userId, avatars_[userId].url);
 
-                        QList<TimelineItem *> timelineItems;
-                        timelineItems.push_back(item);
+                QList<TimelineItem *> timelineItems;
+                timelineItems.push_back(item);
 
-                        toBeResolved_.insert(userId, timelineItems);
-                } else {
-                        toBeResolved_[userId].push_back(item);
-                }
+                toBeResolved_.insert(userId, timelineItems);
+        } else {
+                toBeResolved_[userId].push_back(item);
         }
 }
 
 void
 AvatarProvider::setAvatarUrl(const QString &userId, const QUrl &url)
 {
-        avatarUrls_.insert(userId, url);
+        AvatarData data;
+        data.url = url;
+
+        avatars_.insert(userId, data);
 }
 
 void
 AvatarProvider::clear()
 {
-        userAvatars_.clear();
-        avatarUrls_.clear();
+        avatars_.clear();
         toBeResolved_.clear();
 }
diff --git a/src/EmojiPickButton.cc b/src/EmojiPickButton.cc
index 17716f6fb4fc67310742da6c3acef34dbdf136e4..a63ca0b2f28190bcaf494ac8d1d050830acfffde 100644
--- a/src/EmojiPickButton.cc
+++ b/src/EmojiPickButton.cc
@@ -15,8 +15,8 @@
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-#include "EmojiPanel.h"
 #include "EmojiPickButton.h"
+#include "EmojiPanel.h"
 
 EmojiPickButton::EmojiPickButton(QWidget *parent)
   : FlatButton(parent)
diff --git a/src/Login.cc b/src/Login.cc
index 69338f2ce33938f26ec225491443675f58b8dbe0..a9e303f9ef10dff3c4ac76f37578f492f0f0cb5e 100644
--- a/src/Login.cc
+++ b/src/Login.cc
@@ -15,8 +15,8 @@
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-#include "Deserializable.h"
 #include "Login.h"
+#include "Deserializable.h"
 
 LoginRequest::LoginRequest() {}
 
diff --git a/src/LoginPage.cc b/src/LoginPage.cc
index c1ba352cd3518188953e398aa4bc55a0da33937b..528b744242889cf3c41993142b33028d16aa8b45 100644
--- a/src/LoginPage.cc
+++ b/src/LoginPage.cc
@@ -15,11 +15,11 @@
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+#include "LoginPage.h"
 #include "Config.h"
 #include "FlatButton.h"
 #include "InputValidator.h"
 #include "LoadingIndicator.h"
-#include "LoginPage.h"
 #include "MatrixClient.h"
 #include "OverlayModal.h"
 #include "RaisedButton.h"
diff --git a/src/Profile.cc b/src/Profile.cc
index 38795e4912d01d13e0ade1990f39e9a0c759f469..8eaafe0733ae99a6f19696429ebfae3d026bb8be 100644
--- a/src/Profile.cc
+++ b/src/Profile.cc
@@ -16,6 +16,7 @@
  */
 
 #include "Deserializable.h"
+
 #include "Profile.h"
 
 void
diff --git a/src/Register.cc b/src/Register.cc
index 0fe2ddceac62eb7033a3cfe15a118949c5d5849f..7453c94320ee65dfc53b4293e850330aca6404d7 100644
--- a/src/Register.cc
+++ b/src/Register.cc
@@ -16,6 +16,7 @@
  */
 
 #include "Deserializable.h"
+
 #include "Register.h"
 
 RegisterRequest::RegisterRequest(const QString &username, const QString &password)
diff --git a/src/RegisterPage.cc b/src/RegisterPage.cc
index d8186f65cfcff6edf4164af2da0b57596694a31d..304a7dc0d1c093e69eabf4216ea342fdd3dfa647 100644
--- a/src/RegisterPage.cc
+++ b/src/RegisterPage.cc
@@ -15,13 +15,13 @@
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+#include "RegisterPage.h"
 #include "Avatar.h"
 #include "Config.h"
 #include "FlatButton.h"
 #include "InputValidator.h"
 #include "MatrixClient.h"
 #include "RaisedButton.h"
-#include "RegisterPage.h"
 #include "TextField.h"
 
 RegisterPage::RegisterPage(QSharedPointer<MatrixClient> client, QWidget *parent)