func handleListAutoscaleMembers(c *cli.Context) {
	name := c.String("name")
	//prefix := c.String("prefix")
	//suffix := c.String("suffix")
	format := c.String("format")
	chomp := c.String("chomp")
	//joinSeparator := c.String("join-separator")
	outputFilePath := c.String("out")

	// sanitize everything
	format = sanitize(format)
	chomp = sanitize(chomp)

	// parse format as golang template
	tmpl, err := template.New("format").Parse(format)
	if err != nil {
		log.Fatal(err)
	}

	// for now, just AWS provider
	var provider providers.Provider = aws.New()

	// retrieve cluster members
	var clusterMembersByName map[string]string = nil
	if name == "" {
		clusterMembersByName, err = provider.GetClusterMembers()
		if err != nil {
			log.Fatal(err)
		}
	} else {
		clusterMembersByName, err = provider.GetClusterMembersByName(name)
		if err != nil {
			log.Fatal(err)
		}
	}

	// create intermediate key map
	sortedNames := make([]string, 0)
	for name := range clusterMembersByName {
		sortedNames = append(sortedNames, name)
	}

	// do string sorting
	sort.Strings(sortedNames)

	// create final sorted array of Name & Addresses
	sortedNameAndAddresses := make([]NameAndAddress, 0)
	for _, name := range sortedNames {
		nameAndAddress := NameAndAddress{name, clusterMembersByName[name]}
		sortedNameAndAddresses = append(sortedNameAndAddresses, nameAndAddress)
	}

	// loop over sorted name (which are the keys in the map)
	data, err := executeTemplate(tmpl, sortedNameAndAddresses)
	if err != nil {
		log.Fatal(err)
	}

	// chomp if necessary
	if chomp != "" {
		if last := len(data) - 1; last >= 0 && strings.Contains(chomp, string([]rune(data)[last])) {
			data = string([]rune(data)[:last])
		}
	}

	if outputFilePath == "" {
		printToStdout(data)
	} else {
		printToFile(outputFilePath, data)
	}
}