diff --git a/app/assets/javascripts/discourse/controllers/avatar_selector_controller.js b/app/assets/javascripts/discourse/controllers/avatar_selector_controller.js
index d4aebbc97..861853ca4 100644
--- a/app/assets/javascripts/discourse/controllers/avatar_selector_controller.js
+++ b/app/assets/javascripts/discourse/controllers/avatar_selector_controller.js
@@ -8,39 +8,7 @@
   @module Discourse
 **/
 Discourse.AvatarSelectorController = Discourse.Controller.extend(Discourse.ModalFunctionality, {
-  init: function() {
-    // copy some data to support the cancel action
-    this.setProperties(this.get("currentUser").getProperties(
-      "username",
-      "has_uploaded_avatar",
-      "use_uploaded_avatar",
-      "gravatar_template",
-      "uploaded_avatar_template"
-    ));
-  },
-
   toggleUseUploadedAvatar: function(toggle) {
     this.set("use_uploaded_avatar", toggle);
-  },
-
-  saveAvatarSelection: function() {
-    // sends the information to the server if it has changed
-    if (this.get("use_uploaded_avatar") !== this.get("currentUser.use_uploaded_avatar")) {
-      var data = { use_uploaded_avatar: this.get("use_uploaded_avatar") };
-      Discourse.ajax("/users/" + this.get("currentUser.username") + "/preferences/avatar/toggle", { type: 'PUT', data: data });
-    }
-    // saves the data back to the currentUser object
-    var currentUser = this.get("currentUser");
-    currentUser.setProperties(this.getProperties(
-      "has_uploaded_avatar",
-      "use_uploaded_avatar",
-      "gravatar_template",
-      "uploaded_avatar_template"
-    ));
-    if (this.get("use_uploaded_avatar")) {
-      currentUser.set("avatar_template", this.get("uploaded_avatar_template"));
-    } else {
-      currentUser.set("avatar_template", this.get("gravatar_template"));
-    }
   }
 });
diff --git a/app/assets/javascripts/discourse/models/user.js b/app/assets/javascripts/discourse/models/user.js
index d1b842661..4abb65886 100644
--- a/app/assets/javascripts/discourse/models/user.js
+++ b/app/assets/javascripts/discourse/models/user.js
@@ -139,7 +139,7 @@ Discourse.User = Discourse.Model.extend({
   **/
   save: function() {
     var user = this;
-    return Discourse.ajax("/users/" + this.get('username').toLowerCase(), {
+    return Discourse.ajax("/users/" + this.get('username_lower'), {
       data: this.getProperties('auto_track_topics_after_msecs',
                                'bio_raw',
                                'website',
@@ -260,6 +260,17 @@ Discourse.User = Discourse.Model.extend({
       user.setProperties(json.user);
       return user;
     });
+  },
+
+  /*
+    Change avatar selection
+
+    @method toggleAvatarSelection
+    @returns {Promise} the result of the toggle avatar selection
+  */
+  toggleAvatarSelection: function() {
+    var data = { use_uploaded_avatar: this.get("use_uploaded_avatar") };
+    return Discourse.ajax("/users/" + this.get("username") + "/preferences/avatar/toggle", { type: 'PUT', data: data });
   }
 
 });
diff --git a/app/assets/javascripts/discourse/routes/preferences_routes.js b/app/assets/javascripts/discourse/routes/preferences_routes.js
index 0ddc31a45..e623cf3c4 100644
--- a/app/assets/javascripts/discourse/routes/preferences_routes.js
+++ b/app/assets/javascripts/discourse/routes/preferences_routes.js
@@ -18,7 +18,35 @@ Discourse.PreferencesRoute = Discourse.RestrictedUserRoute.extend({
   events: {
     showAvatarSelector: function() {
       Discourse.Route.showModal(this, 'avatarSelector');
-      this.controllerFor("avatarSelector").init();
+      var user = this.modelFor("user");
+      console.log(user);
+      this.controllerFor("avatarSelector").setProperties(user.getProperties(
+        "username",
+        "email",
+        "has_uploaded_avatar",
+        "use_uploaded_avatar",
+        "gravatar_template",
+        "uploaded_avatar_template"
+      ));
+    },
+
+    saveAvatarSelection: function() {
+      var user = this.modelFor("user");
+      var avatar = this.controllerFor("avatarSelector");
+      // sends the information to the server if it has changed
+      if (avatar.get("use_uploaded_avatar") !== user.get("use_uploaded_avatar")) { user.toggleAvatarSelection(); }
+      // saves the data back
+      user.setProperties(avatar.getProperties(
+        "has_uploaded_avatar",
+        "use_uploaded_avatar",
+        "gravatar_template",
+        "uploaded_avatar_template"
+      ));
+      if (avatar.get("use_uploaded_avatar")) {
+        user.set("avatar_template", avatar.get("uploaded_avatar_template"));
+      } else {
+        user.set("avatar_template", avatar.get("gravatar_template"));
+      }
     }
   }
 });
diff --git a/app/assets/javascripts/discourse/templates/modal/avatar_selector.js.handlebars b/app/assets/javascripts/discourse/templates/modal/avatar_selector.js.handlebars
index 8242668af..4548c091b 100644
--- a/app/assets/javascripts/discourse/templates/modal/avatar_selector.js.handlebars
+++ b/app/assets/javascripts/discourse/templates/modal/avatar_selector.js.handlebars
@@ -2,7 +2,7 @@
   <div>
     <div>
       <input type="radio" id="avatar" name="avatar" value="gravatar" {{action toggleUseUploadedAvatar false}}>
-      <label class="radio" for="avatar">{{avatar controller imageSize="large" template="gravatar_template"}} {{{i18n user.change_avatar.gravatar}}} {{currentUser.email}}</label>
+      <label class="radio" for="avatar">{{avatar controller imageSize="large" template="gravatar_template"}} {{{i18n user.change_avatar.gravatar}}} {{email}}</label>
       <a href="//gravatar.com/emails" target="_blank" title="{{i18n user.change_avatar.gravatar_title}}" class="btn"><i class="icon-pencil"></i></a>
     </div>
     <div>
diff --git a/app/serializers/current_user_serializer.rb b/app/serializers/current_user_serializer.rb
index 59c28c7f4..69079b4f3 100644
--- a/app/serializers/current_user_serializer.rb
+++ b/app/serializers/current_user_serializer.rb
@@ -14,11 +14,7 @@ class CurrentUserSerializer < BasicUserSerializer
              :external_links_in_new_tab,
              :dynamic_favicon,
              :trust_level,
-             :can_edit,
-             :use_uploaded_avatar,
-             :has_uploaded_avatar,
-             :gravatar_template,
-             :uploaded_avatar_template
+             :can_edit
 
   def include_site_flagged_posts_count?
     object.staff?
@@ -40,8 +36,4 @@ class CurrentUserSerializer < BasicUserSerializer
     true
   end
 
-  def gravatar_template
-    User.gravatar_template(object.email)
-  end
-
 end
diff --git a/app/serializers/user_serializer.rb b/app/serializers/user_serializer.rb
index cda2135dd..f76744822 100644
--- a/app/serializers/user_serializer.rb
+++ b/app/serializers/user_serializer.rb
@@ -51,7 +51,11 @@ class UserSerializer < BasicUserSerializer
                      :new_topic_duration_minutes,
                      :external_links_in_new_tab,
                      :dynamic_favicon,
-                     :enable_quoting
+                     :enable_quoting,
+                     :use_uploaded_avatar,
+                     :has_uploaded_avatar,
+                     :gravatar_template,
+                     :uploaded_avatar_template
 
 
   def auto_track_topics_after_msecs
@@ -78,4 +82,8 @@ class UserSerializer < BasicUserSerializer
     UserAction.stats(object.id, scope)
   end
 
+  def gravatar_template
+    User.gravatar_template(object.email)
+  end
+
 end