docs: function (cfg, callback, update) {
              update = !!update;
              var keys = ariaUtilsObject.keys(cfg);
              if (update) {
                  ariaUtilsJson.inject(cfg, this.applicationSettings, true);
              } else {
                  if (keys.length === 0) {
                      // reset stored application settings
                      this.applicationSettings = {};
                      keys = null;
                  } else {
                      for (var i = 0; i < keys.length; i++) {
                          var keyName = keys[i];
                          this.applicationSettings[keyName] = cfg[keyName];
                      }
                  }
              }
              var evt = {
                  name : "changingEnvironment",
                  changedProperties : keys,
                  asyncCalls : 1
              };
              evt.callback = {
                  fn : function () {
                      evt.asyncCalls--;
                      if (evt.asyncCalls <= 0) {
                          evt.callback.fn = null;
                          evt = null;
                          keys = null;
                          this.$callback(callback);
                      }
                  },
                  scope : this
              };
              this.$raiseEvent(evt);
              this.$raiseEvent({
                  name : "environmentChanged",
                  changedProperties : keys
              });
              this.$callback(evt.callback);
          }