code: func NewClient(cfg *Config) (client *Client, err error) {
  	db, err := bolt.Open(cfg.DbPath, cfg.FileMode, &bolt.Options{
  		Timeout: cfg.LockTimeout,
  	})
  	if err != nil {
  		return nil, err
  	}
  	boltLogger.Infof("bolt path: %v", db.Path())
  
  	err = db.Update(func(tx *bolt.Tx) error {
  		_, err := tx.CreateBucketIfNotExists(rootBucket)
  		return err
  	})
  	if err != nil {
  		return nil, err
  	}
  
  	c := &Client{
  		db:         db,
  		cfg:        *cfg,
  		quit:       make(chan struct{}),
  		updateChan: make(chan *updateTx, UpdatesChannelSize),
  	}
  
  	c.wg.Add(1)
  	go c.startUpdater()
  
  	return c, nil
  }
docs: // NewClient creates new client for Bolt using given config.