code: func NewLookupWithOption(hosts []string, opts Options) Proxy {
  	p := Proxy{Next: nil}
  
  	// TODO(miek): this needs to be unified with upstream.go's NewStaticUpstreams, caddy uses NewHost
  	// we should copy/make something similar.
  	upstream := &staticUpstream{
  		from: ".",
  		HealthCheck: healthcheck.HealthCheck{
  			FailTimeout: 5 * time.Second,
  			MaxFails:    3,
  		},
  		ex: newDNSExWithOption(opts),
  	}
  	upstream.Hosts = make([]*healthcheck.UpstreamHost, len(hosts))
  
  	for i, host := range hosts {
  		uh := &healthcheck.UpstreamHost{
  			Name:        host,
  			FailTimeout: upstream.FailTimeout,
  			CheckDown:   checkDownFunc(upstream),
  		}
  
  		upstream.Hosts[i] = uh
  	}
  	p.Upstreams = &[]Upstream{upstream}
  	return p
  }
docs: // NewLookupWithOption process creates a simple round robin forward with potentially forced proto for upstream.