func NewManifestV2(config ConfigV2, iaasConfig iaas.Config) (ManifestV2, error) {
	manifest := ManifestV2{
		DirectorUUID:   config.DirectorUUID,
		Name:           config.Name,
		Releases:       releases(),
		Update:         update(),
		InstanceGroups: []core.InstanceGroup{},
		Properties:     Properties{},
	}
	manifest.Stemcells = []core.Stemcell{
		{
			Alias:   "linux",
			Version: "latest",
			Name:    iaasConfig.Stemcell(),
		},
	}

	if config.WindowsClients {
		manifest.Stemcells = append(manifest.Stemcells, core.Stemcell{
			Alias:   "windows",
			Version: "latest",
			Name:    iaasConfig.WindowsStemcell(),
		})
	}

	consulInstanceGroup, err := consulInstanceGroup(config)
	if err != nil {
		return ManifestV2{}, err
	}
	manifest.InstanceGroups = append(manifest.InstanceGroups, consulInstanceGroup)

	consulTestConsumerInstanceGroup, err := consulTestConsumerInstanceGroup(config)
	if err != nil {
		return ManifestV2{}, err
	}
	manifest.InstanceGroups = append(manifest.InstanceGroups, consulTestConsumerInstanceGroup)

	manifest.Properties.Consul = newConsulProperties(consulInstanceGroup.Networks[0].StaticIPs)

	return manifest, nil
}