code: function() {
  		if (typeof(this.events) == "undefined" || typeof(this.events.length) == "undefined" || this.events.length == 0) {
  			this.logError("Timeline configuration has no events.")
  		}
  
  		// make sure all eras have start and end dates
  		for (var i = 0; i < this.eras.length; i++) {
  			if (typeof(this.eras[i].start_date) == 'undefined' || typeof(this.eras[i].end_date) == 'undefined') {
  				var era_identifier;
  				if (this.eras[i].text && this.eras[i].text.headline) {
  					era_identifier = this.eras[i].text.headline
  				} else {
  					era_identifier = "era " + (i+1);
  				}
  				this.logError("All eras must have start and end dates. [" + era_identifier + "]") // add internationalization (I18N) and context
  			}
  		};
  	}
docs: /*
  Perform any sanity checks we can before trying to use this to make a timeline. Returns nothing, but errors will be logged
  such that after this is called, one can test `this.isValid()` to see if everything is OK.