code: func (self *Connection) Register(document IDocumentBase, collectionName string) {
  
  	if document == nil {
  		panic("document can not be nil")
  	}
  
  	reflectType := reflect.TypeOf(document)
  	typeName := strings.ToLower(reflectType.Elem().Name())
  
  	//check if model was already registered
  	if _, ok := self.modelRegistry[typeName]; !ok {
  		collection := self.Session.DB("").C(collectionName) // empty string returns db name from dial info
  		model := &Model{collection, self}
  
  		self.modelRegistry[typeName] = model
  		self.typeRegistry[typeName] = reflectType.Elem()
  
  		fmt.Sprintf("Registered type '%v' for collection '%v'", typeName, collectionName)
  
  	} else {
  		fmt.Sprintf("Tried to register type '%v' twice", typeName)
  	}
  }
docs: /*
  It is necessary to register your created models to the ODM to work with. Within this process
  the ODM creates an internal model and type registry to work fully automatically and consistent.
  Make sure you already created a connection. Registration expects a pointer to an IDocumentBase
  type and the collection name where the documents should be stored in.
  
  For example:
  	connection.Register(&User{}, "users")
  	connection.Register(&Message{}, "messages")
  	connection.Register(&Customer{}, "customers")
  */