diff --git a/cli/app/version.go b/cli/app/version.go
index a5f420211..d0ac862c5 100644
--- a/cli/app/version.go
+++ b/cli/app/version.go
@@ -14,6 +14,19 @@ import (
 	"github.com/urfave/cli/v2"
 )
 
+// getImagePath returns the image name
+func getImagePath(image string) (string, error) {
+	img, err := reference.ParseNormalizedNamed(image)
+	if err != nil {
+		return "", err
+	}
+	path := reference.Path(img)
+	if strings.Contains(image, "library") {
+		image = strings.Split(image, "/")[1]
+	}
+	return path, nil
+}
+
 // parseVersionLabel parses a $STACK_NAME_$SERVICE_NAME service label
 func parseServiceName(label string) string {
 	idx := strings.LastIndex(label, "_")
@@ -63,22 +76,33 @@ var appVersionCommand = &cli.Command{
 		tableCol := []string{"Name", "Image", "Version", "Digest"}
 		table := abraFormatter.CreateTable(tableCol)
 
+		statuses := make(map[string]stack.StackStatus)
 		for range compose.Services {
 			status := <-ch
-			for _, service := range status.Services {
-				serviceName := parseServiceName(service.Spec.Name)
-				label := fmt.Sprintf("coop-cloud.%s.%s.version", appEnv.StackName(), serviceName)
-				version, digest := parseVersionLabel(service.Spec.Labels[label])
-				img, err := reference.ParseNormalizedNamed(service.Spec.Labels["com.docker.stack.image"])
+			if len(status.Services) > 0 {
+				serviceName := parseServiceName(status.Services[0].Spec.Name)
+				statuses[serviceName] = status
+			}
+		}
+
+		for _, service := range compose.Services {
+			if status, ok := statuses[service.Name]; ok {
+				statusService := status.Services[0]
+				label := fmt.Sprintf("coop-cloud.%s.%s.version", appEnv.StackName(), service.Name)
+				version, digest := parseVersionLabel(statusService.Spec.Labels[label])
+				image, err := getImagePath(statusService.Spec.Labels["com.docker.stack.image"])
 				if err != nil {
 					logrus.Fatal(err)
 				}
-				image := reference.Path(img)
-				if strings.Contains(image, "library") {
-					image = strings.Split(image, "/")[1]
-				}
-				table.Append([]string{serviceName, image, version, digest})
+				table.Append([]string{service.Name, image, version, digest})
+				continue
 			}
+
+			image, err := getImagePath(service.Image)
+			if err != nil {
+				logrus.Fatal(err)
+			}
+			table.Append([]string{service.Name, image, "?", "?"})
 		}
 
 		table.Render()
diff --git a/config/app.go b/config/app.go
index 8646e84e8..e628eb192 100644
--- a/config/app.go
+++ b/config/app.go
@@ -209,9 +209,7 @@ func GetAppStatuses(appFiles AppFiles) (map[string]string, error) {
 	servers := appFiles.GetServers()
 	ch := make(chan stack.StackStatus, len(servers))
 	for _, server := range servers {
-		go func(s string) {
-			ch <- stack.GetAllDeployedServices(s)
-		}(server)
+		go func(s string) { ch <- stack.GetAllDeployedServices(s) }(server)
 	}
 
 	statuses := map[string]string{}