code: func Open(path string, stormOptions ...func(*Options) error) (*DB, error) {
  	var err error
  
  	var opts Options
  	for _, option := range stormOptions {
  		if err = option(&opts); err != nil {
  			return nil, err
  		}
  	}
  
  	s := DB{
  		Bolt: opts.bolt,
  	}
  
  	n := node{
  		s:          &s,
  		codec:      opts.codec,
  		batchMode:  opts.batchMode,
  		rootBucket: opts.rootBucket,
  	}
  
  	if n.codec == nil {
  		n.codec = defaultCodec
  	}
  
  	if opts.boltMode == 0 {
  		opts.boltMode = 0600
  	}
  
  	if opts.boltOptions == nil {
  		opts.boltOptions = &bolt.Options{Timeout: 1 * time.Second}
  	}
  
  	s.Node = &n
  
  	// skip if UseDB option is used
  	if s.Bolt == nil {
  		s.Bolt, err = bolt.Open(path, opts.boltMode, opts.boltOptions)
  		if err != nil {
  			return nil, err
  		}
  	}
  
  	err = s.checkVersion()
  	if err != nil {
  		return nil, err
  	}
  
  	return &s, nil
  }
docs: // Open opens a database at the given path with optional Storm options.