code: func NewModule(host, namespace, name, provider, submodule string) (*Module, error) {
  	m := &Module{
  		RawNamespace: namespace,
  		RawName:      name,
  		RawProvider:  provider,
  		RawSubmodule: submodule,
  	}
  	if host != "" {
  		h := NewFriendlyHost(host)
  		if h != nil {
  			fmt.Println("HOST:", h)
  			if !h.Valid() || disallowed[h.Display()] {
  				return nil, ErrInvalidModuleSource
  			}
  		}
  		m.RawHost = h
  	}
  	return m, nil
  }
docs: // NewModule construct a new module source from separate parts. Pass empty
  // string if host or submodule are not needed.