code: func (m *Metric) collect(in <-chan string) <-chan cloudWatchMetric {
  	var wg sync.WaitGroup
  	out := make(chan cloudWatchMetric)
  
  	for name := range in {
  		wg.Add(1)
  		name := name
  
  		go func() {
  			defer wg.Done()
  
  			res, err := m.stats(name)
  			if err != nil {
  				// TODO: refactor so that errors are reported in cmd
  				fmt.Println(err.Error())
  				return
  			}
  
  			out <- cloudWatchMetric{
  				Name:  name,
  				Value: res.Datapoints,
  			}
  		}()
  	}
  
  	go func() {
  		wg.Wait()
  		close(out)
  	}()
  
  	return out
  }
docs: // collect starts a new cloudwatch session and requests the key metrics.