code: function(data, defer_sort) {
  		var event_id = this._assignID(data);
  
  		if (typeof(data.start_date) == 'undefined') {
  		    throw new TL.Error("missing_start_date_err", event_id);
  		} else {
  			this._processDates(data);
  			this._tidyFields(data);
  		}
  
  		this.events.push(data);
  		this.event_dict[event_id] = data;
  
  		if (!defer_sort) {
  			TL.DateUtil.sortByDate(this.events);
  		}
  		return event_id;
  	}
docs: /* Add an event (including cleaning/validation) and return the unique id.
  All event data validation should happen in here.
  Throws: TL.Error for any validation problems.