     _.extend rootSchema, schema
     @setDefaults(keyPath, @extractDefaultsFromSchema(schema))
     @setScopedDefaultsFromSchema(keyPath, schema)
-    @resetForSchemaChange()
+    @resetSettingsForSchemaChange()
 
   load: ->
     @initializeConfigDirectory()

      defaults[key] = @extractDefaultsFromSchema(value) for key, value of properties
      defaults

  makeValueConformToSchema: (keyPath, value) ->
    value = @constructor.executeSchemaEnforcers(keyPath, value, schema) if schema = @getSchema(keyPath)
    value

  # When the schema is changed / added, there may be values set in the config
  # that do not conform to the config. This will reset make them conform.
  resetForSchemaChange: (source=@getUserConfigPath()) ->
    settings = @settings
    @settings = null
    @set(null, settings, {save: false})

    priority = @priorityForSource(source)
    selectorsAndSettings = @scopedSettingsStore.propertiesForSource(source)
    @scopedSettingsStore.removePropertiesForSource(source)
    for scopeSelector, settings of selectorsAndSettings
      @set(null, settings, {scopeSelector, source, priority, save: false}) if settings?
    return

  ###
  Section: Private Scoped Settings

    @scopedSettingsStore.removePropertiesForSource(source)

    for scopeSelector, settings of newScopedSettings
      settings = @makeValueConformToSchema(null, settings, suppressException: true)
      validatedSettings = {}
      validatedSettings[scopeSelector] = withoutEmptyObjects(settings)
      @scopedSettingsStore.addProperties(source, validatedSettings, {priority}) if validatedSettings[scopeSelector]?

    @emitChangeEvent()
