diff --git a/app/models/CocoModel.coffee b/app/models/CocoModel.coffee
index feb574353..e2cefa09d 100644
--- a/app/models/CocoModel.coffee
+++ b/app/models/CocoModel.coffee
@@ -104,14 +104,14 @@ class CocoModel extends Backbone.Model
     options.patch = true
     
     attrs = {_id: @id}
-    anythingChanged = false
+    keys = []
     for key in _.keys @attributes
       unless _.isEqual @attributes[key], @_revertAttributes[key]
         attrs[key] = @attributes[key]
-        anythingChanged = true
+        keys.push key
     
-    return unless anythingChanged
-    console.debug 'Patching', @, attrs
+    return unless keys.length
+    console.debug 'Patching', @get('name') or @, keys
     @save(attrs, options)
 
   fetch: ->
@@ -120,7 +120,6 @@ class CocoModel extends Backbone.Model
     @jqxhr
 
   markToRevert: ->
-    console.debug "Saving _revertAttributes for #{@constructor.className}: '#{@get('name')}'"
     if @type() is 'ThangType'
       @_revertAttributes = _.clone @attributes  # No deep clones for these!
     else
diff --git a/app/views/play/level/modal/editor_config_modal.coffee b/app/views/play/level/modal/editor_config_modal.coffee
index a90afad08..ff72ada2b 100644
--- a/app/views/play/level/modal/editor_config_modal.coffee
+++ b/app/views/play/level/modal/editor_config_modal.coffee
@@ -79,7 +79,7 @@ module.exports = class EditorConfigModal extends View
     Backbone.Mediator.publish 'tome:change-config'
     Backbone.Mediator.publish 'tome:change-language', language: newLanguage unless newLanguage is oldLanguage
     @session.save() unless newLanguage is oldLanguage
-    me.save()
+    me.patch()
 
   destroy: ->
     super()
diff --git a/app/views/play/level/modal/victory_modal.coffee b/app/views/play/level/modal/victory_modal.coffee
index ecc883426..954ab63ef 100644
--- a/app/views/play/level/modal/victory_modal.coffee
+++ b/app/views/play/level/modal/victory_modal.coffee
@@ -81,7 +81,7 @@ module.exports = class VictoryModal extends View
       if enough and not me.get('hourOfCodeComplete')
         $('body').append($("<img src='http://code.org/api/hour/finish_codecombat.png' style='visibility: hidden;'>"))
         me.set 'hourOfCodeComplete', true
-        me.save()
+        me.patch()
         window.tracker?.trackEvent 'Hour of Code Finish', {}
       # Show the "I'm done" button if they get to the end, unless it's been over two hours
       tooMuch = elapsed >= 120 * 60 * 1000
diff --git a/app/views/play/level/playback_view.coffee b/app/views/play/level/playback_view.coffee
index 9d377eb52..d3f66d89d 100644
--- a/app/views/play/level/playback_view.coffee
+++ b/app/views/play/level/playback_view.coffee
@@ -355,7 +355,7 @@ module.exports = class PlaybackView extends View
   onToggleMusic: (e) ->
     e?.preventDefault()
     me.set('music', not me.get('music'))
-    me.save()
+    me.patch()
     $(document.activeElement).blur()
 
   destroy: ->
diff --git a/app/views/play/level/tome/cast_button_view.coffee b/app/views/play/level/tome/cast_button_view.coffee
index 133cfbfcc..5f368a51c 100644
--- a/app/views/play/level/tome/cast_button_view.coffee
+++ b/app/views/play/level/tome/cast_button_view.coffee
@@ -97,7 +97,7 @@ module.exports = class CastButtonView extends View
     return unless delay
     @autocastDelay = delay = parseInt delay
     me.set('autocastDelay', delay)
-    me.save()
+    me.patch()
     spell.view.setAutocastDelay delay for spellKey, spell of @spells
     @castOptions.find('a').each ->
       $(@).toggleClass('selected', parseInt($(@).attr('data-delay')) is delay)
diff --git a/app/views/play/level_view.coffee b/app/views/play/level_view.coffee
index 392198638..411944390 100644
--- a/app/views/play/level_view.coffee
+++ b/app/views/play/level_view.coffee
@@ -93,7 +93,7 @@ module.exports = class PlayLevelView extends View
 
   setUpHourOfCode: ->
     me.set 'hourOfCode', true
-    me.save()
+    me.patch()
     $('body').append($("<img src='http://code.org/api/hour/begin_codecombat.png' style='visibility: hidden;'>"))
     application.tracker?.trackEvent 'Hour of Code Begin', {}