code: func NewREST(
  	services ServiceStorage,
  	endpoints EndpointsStorage,
  	pods rest.Getter,
  	serviceIPs ipallocator.Interface,
  	serviceNodePorts portallocator.Interface,
  	proxyTransport http.RoundTripper,
  ) (*REST, *registry.ProxyREST) {
  	rest := &REST{
  		services:         services,
  		endpoints:        endpoints,
  		serviceIPs:       serviceIPs,
  		serviceNodePorts: serviceNodePorts,
  		proxyTransport:   proxyTransport,
  		pods:             pods,
  	}
  	return rest, &registry.ProxyREST{Redirector: rest, ProxyTransport: proxyTransport}
  }
docs: // NewREST returns a wrapper around the underlying generic storage and performs
  // allocations and deallocations of various service related resources like ports.
  // TODO: all transactional behavior should be supported from within generic storage
  //   or the strategy.