diff --git a/package-lock.json b/package-lock.json
index ce42b1efb531ab17de2f16ab7c76349893a398af..01d2eb7272357854133cd7fe3325d9234a86c4cb 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -3125,8 +3125,7 @@
         "ansi-regex": {
           "version": "2.1.1",
           "bundled": true,
-          "dev": true,
-          "optional": true
+          "dev": true
         },
         "aproba": {
           "version": "1.2.0",
@@ -3528,8 +3527,7 @@
         "safe-buffer": {
           "version": "5.1.2",
           "bundled": true,
-          "dev": true,
-          "optional": true
+          "dev": true
         },
         "safer-buffer": {
           "version": "2.1.2",
@@ -3584,7 +3582,6 @@
           "version": "3.0.1",
           "bundled": true,
           "dev": true,
-          "optional": true,
           "requires": {
             "ansi-regex": "^2.0.0"
           }
@@ -3628,14 +3625,12 @@
         "wrappy": {
           "version": "1.0.2",
           "bundled": true,
-          "dev": true,
-          "optional": true
+          "dev": true
         },
         "yallist": {
           "version": "3.0.3",
           "bundled": true,
-          "dev": true,
-          "optional": true
+          "dev": true
         }
       }
     },
diff --git a/src/faction/faction.service.ts b/src/faction/faction.service.ts
index 5c989b5b213ce82534b4f305d4a4f7989a0e2362..de1472e4a31e3bfc9df865204556eccd71c25e85 100644
--- a/src/faction/faction.service.ts
+++ b/src/faction/faction.service.ts
@@ -132,33 +132,60 @@ export class FactionService {
 
   // get the groups in the given Faction
   async showGroups(factionId) {
+    let players = await this.game_PersonRepository.find({
+      where: { faction: factionId },
+      relations: ['person', 'group'],
+    });
+
     let groups = await this.game_GroupRepository.find({
       where: { faction: factionId },
-      relations: ['leader', 'leader.person', 'players', 'players.person'],
+      relations: ['leader', 'leader.person'],
     });
 
-    let players = await Promise.all(
+    let resObj = await Promise.all(
       groups.map(async group => {
-        let groupPlayers = await Promise.all(
-          group.players.map(async player => {
-            return await {
-              gamepersonId: player.gamepersonId,
-              role: player.role,
-              name: player.person.name,
-            };
-          }),
-        );
         return await {
           id: group.id,
           name: group.name,
           class: group.class,
-          players: groupPlayers,
           leader: group.leader.person.name,
+          players: [],
         };
       }),
     );
 
-    return players;
+    resObj.push({
+      id: 'empty-group-id',
+      name: 'No group',
+      class: 'infantry',
+      leader: '',
+      players: [],
+    });
+
+    await Promise.all(
+      players.map(async player => {
+        for (let i = 0; i < resObj.length; i++) {
+          if (player.group == null) {
+            resObj[resObj.length - 1].players.push({
+              gamepersonId: player.gamepersonId,
+              role: player.role,
+              name: player.person.name,
+            });
+            break;
+          }
+          if (resObj[i].name == player.group.name) {
+            resObj[i].players.push({
+              gamepersonId: player.gamepersonId,
+              role: player.role,
+              name: player.person.name,
+            });
+            break;
+          }
+        }
+      }),
+    );
+
+    return resObj;
   }
 
   // puts a non admin or faction leader player into a specified group