docs: function (options) {
              if (!isObject(options)) {
                  options = {};
              }
  
              this.options = extend({}, defaultOptions.base);
  
              var i,
                  actions = ['drag', 'drop', 'resize', 'gesture'],
                  methods = ['draggable', 'dropzone', 'resizable', 'gesturable'],
                  perActions = extend(extend({}, defaultOptions.perAction), options[action] || {});
  
              for (i = 0; i < actions.length; i++) {
                  var action = actions[i];
  
                  this.options[action] = extend({}, defaultOptions[action]);
  
                  this.setPerAction(action, perActions);
  
                  this[methods[i]](options[action]);
              }
  
              var settings = [
                      'accept', 'actionChecker', 'allowFrom', 'deltaSource',
                      'dropChecker', 'ignoreFrom', 'origin', 'preventDefault',
                      'rectChecker', 'styleCursor'
                  ];
  
              for (i = 0, len = settings.length; i < len; i++) {
                  var setting = settings[i];
  
                  this.options[setting] = defaultOptions.base[setting];
  
                  if (setting in options) {
                      this[setting](options[setting]);
                  }
              }
  
              return this;
          }