code: func (self *Connection) Open() (err error) {
  
  	defer func() {
  		if r := recover(); r != nil {
  
  			if e, ok := r.(error); ok {
  				err = e
  			} else if e, ok := r.(string); ok {
  				err = errors.New(e)
  			} else {
  				err = errors.New(fmt.Sprint(r))
  			}
  		}
  	}()
  
  	var info *mgo.DialInfo
  	
  	if self.Config.DialInfo == info {
  		info = &mgo.DialInfo{
  			Addrs:    self.Config.DatabaseHosts,
  			Timeout:  3 * time.Second,
  			Database: self.Config.DatabaseName,
  			Username: self.Config.DatabaseUser,
  			Password: self.Config.DatabasePassword,
  			Source:   self.Config.DatabaseSource,
  		}
  	} else {
  		info = self.Config.DialInfo
  	}
  	
  	session, err := mgo.DialWithInfo(info)
  
  	if err != nil {
  		return err
  	}
  
  	self.Session = session
  
  	self.Session.SetMode(mgo.Monotonic, true)
  	return nil
  }
docs: //Opens a database connection manually if the config was set.
  //This method gets called automatically from the Connect() method.