code: func Load() (*TopLevel, error) {
  	config := viper.New()
  	coreconfig.InitViper(config, "orderer")
  	config.SetEnvPrefix(Prefix)
  	config.AutomaticEnv()
  	replacer := strings.NewReplacer(".", "_")
  	config.SetEnvKeyReplacer(replacer)
  
  	if err := config.ReadInConfig(); err != nil {
  		return nil, fmt.Errorf("Error reading configuration: %s", err)
  	}
  
  	var uconf TopLevel
  	if err := viperutil.EnhancedExactUnmarshal(config, &uconf); err != nil {
  		return nil, fmt.Errorf("Error unmarshaling config into struct: %s", err)
  	}
  
  	uconf.completeInitialization(filepath.Dir(config.ConfigFileUsed()))
  	return &uconf, nil
  }
docs: // Load parses the orderer YAML file and environment, producing
  // a struct suitable for config use, returning error on failure.