code: func (mc MongoClient) AddEvent(e contract.Event) (string, error) {
  	s := mc.getSessionCopy()
  	defer s.Close()
  
  	//Add the readings
  	if len(e.Readings) > 0 {
  		var ui []interface{}
  		for i, reading := range e.Readings {
  			var r models.Reading
  			id, err := r.FromContract(reading)
  			if err != nil {
  				return "", err
  			}
  
  			r.TimestampForAdd()
  
  			ui = append(ui, r)
  
  			e.Readings[i].Id = id
  		}
  		if err := s.DB(mc.database.Name).C(db.ReadingsCollection).Insert(ui...); err != nil {
  			return "", errorMap(err)
  		}
  	}
  
  	var mapped models.Event
  	id, err := mapped.FromContract(e, mc)
  	if err != nil {
  		return "", err
  	}
  
  	mapped.TimestampForAdd()
  
  	if err = s.DB(mc.database.Name).C(db.EventsCollection).Insert(mapped); err != nil {
  		return "", errorMap(err)
  	}
  	return id, nil
  }
docs: // Add a new event
  // UnexpectedError - failed to add to database
  // NoValueDescriptor - no existing value descriptor for a reading in the event