docs: function (args) {
    var i;
    if (false === (this instanceof Model)) throw new Error('new operator required');
    this.attributes = [new Attribute('id', 'ID')];
    args = args || {};
    this.modelType = args.modelType || "Model";
    if (args.attributes) {
      for (i in args.attributes) {
        if (args.attributes.hasOwnProperty(i))
          this.attributes.push(args.attributes[i]);
      }
    }
    var unusedProperties = getInvalidProperties(args, ['modelType', 'attributes']);
    var errorList = this.getObjectStateErrors(); // before leaving make sure valid Model
    for (i = 0; i < unusedProperties.length; i++) errorList.push('invalid property: ' + unusedProperties[i]);
    if (errorList.length > 1) throw new Error('error creating Model: multiple errors');
    if (errorList.length) throw new Error('error creating Model: ' + errorList[0]);
    // Validations done
    this._eventListeners = [];
    this._errorConditions = {};
    for (i = 0; i < this.attributes.length; i++) {
     this.attributes[i].model = this;
    }
  }