function ModelBase(attributes, options) {
  let attrs = attributes || {};
  options = options || {};
  this.attributes = Object.create(null);
  this._previousAttributes = {};
  this._reset();
  this.relations = {};
  this.cid = _.uniqueId('c');

  if (options.parse) attrs = this.parse(attrs, options) || {};
  if (options.visible) this.visible = _.clone(options.visible);
  if (options.hidden) this.hidden = _.clone(options.hidden);
  if (typeof options.requireFetch === 'boolean') this.requireFetch = options.requireFetch;
  if (options.tableName) this.tableName = options.tableName;
  if (typeof options.hasTimestamps === 'boolean' || Array.isArray(options.hasTimestamps)) {
    this.hasTimestamps = options.hasTimestamps;
  }

  this.set(attrs, options);
  this.initialize.apply(this, arguments);
}
@class
@classdesc
@extends Events
@inheritdoc
@description

The "ModelBase" is similar to the 'Active Model' in Rails, it defines a
standard interface from which other objects may inherit.