code: func (r *Routers) UnmarshalYAML(unmarshal func(interface{}) error) error {
  	routers := make(Routers, 0)
  	scopes := make([]map[string]interface{}, 0)
  	if err := unmarshal(&scopes); err != nil {
  		return err
  	}
  	defaultRouterExist := false
  	for _, scopeMap := range scopes {
  		for scope, namePrefixes := range scopeMap {
  			namePrefixesMap, ok := namePrefixes.(map[interface{}]interface{})
  			if !ok {
  				return fmt.Errorf("failed to parse the config: %v", namePrefixes)
  			}
  
  			for namePrefix, connector := range namePrefixesMap {
  				namePrefixStr := namePrefix.(string)
  				connectorName, ok := connector.(string)
  				if !ok {
  					return fmt.Errorf("failed to parse the config: %v", namePrefixesMap)
  				}
  				router, err := NewRule(scope, namePrefixStr, connectorName)
  				if err != nil {
  					return errors.Wrap(err, "failed to parse routing config")
  				}
  				routers = append(routers, router)
  				if scope == DefaultScope {
  					defaultRouterExist = true
  				}
  			}
  		}
  	}
  
  	if !defaultRouterExist {
  		return errors.New("there should be a default scope defined in routing config yaml file")
  	}
  
  	sort.Sort(routers)
  	*r = routers
  	return nil
  }
docs: // UnmarshalYAML unmarshals the config into gocql cluster config