diff --git a/.ci/generateIndex.py b/.ci/generateIndex.py
index 85d0345ca4a4bf9b0941631d053c72bf5992d403..51a9213420e59d3ba55a2a364bfc71c5784387ea 100644
--- a/.ci/generateIndex.py
+++ b/.ci/generateIndex.py
@@ -147,6 +147,35 @@ def remove_header(localroot, root, filename):
 
     return n
 
+def generate_header(folder, permalink, shortcut, order):
+    header = "---\n"
+
+    if len(order) > 0:
+        header += "order: " + str(order) + "\n"
+
+    header += "layout: page\n"
+    header += "permalink: " + permalink + "\n"
+    header += "shortcut: " + root_handbook(shortcut) + "\n"
+    header += "redirect_from:\n"
+    header += "  - /cards/" + shortcut + "\n"
+    header += "  - /" + folder + "/cards/" + shortcut + "\n"
+    # special case of handbook
+    if "handbook-annexes" in permalink or "handbook-additional" in permalink:
+        header += "  - /cards/" + root_handbook(shortcut) + "\n"
+        header += "  - /" + folder + "/cards/" + root_handbook(shortcut) + "\n"
+    # after moving lab cards
+    if "lab-software" in permalink or "lab-equipment" in permalink or "lab-hsa" in permalink:
+        header += "  - /cards/" + root_lab(shortcut) + "\n"
+        header += "  - /" + folder + "/cards/" + root_lab(shortcut) + "\n"
+    # include the legacy section
+    if len(legacy_from) > 0:
+        for item in legacy_from:
+            header += str(item)
+    else:
+        header += "---"
+
+    return header
+
 # loop through the entire internal tree
 localroot = os.getcwd()
 
@@ -228,14 +257,8 @@ for folder in cardDirs:
                                 # replace the / with a :
                                 shortcut = re.sub('/', ':', shortcut)
 
-                                # define the header for each card
-                                header = "---\n"
-
                                 if len(order) > 0:
-                                    header += "order: " + str(order) + "\n"
-                                    # append the order of the card
-                                    # find the maximum of existing orders
-
+                                     # find the maximum of existing orders
                                     if folderFlag:
                                         if len(orderArr[indexS]) > 0:
                                             maxOrder = max(orderArr[indexS])
@@ -250,28 +273,8 @@ for folder in cardDirs:
                                 else:
                                     orderArr[indexS] = []
 
-                                header += "layout: page\n"
-                                header += "permalink: " + permalink + "\n"
-                                header += "shortcut: " + root_handbook(shortcut) + "\n"
-                                header += "redirect_from:\n"
-                                header += "  - /cards/" + shortcut + "\n"
-                                header += "  - /" + folder + "/cards/" + shortcut + "\n"
-
-                                # special case of handbook
-                                if "handbook-annexes" in permalink or "handbook-additional" in permalink:
-                                    header += "  - /cards/" + root_handbook(shortcut) + "\n"
-                                    header += "  - /" + folder + "/cards/" + root_handbook(shortcut) + "\n"
-                                # after moving lab cards
-                                if "lab-software" in permalink or "lab-equipment" in permalink or "lab-hsa" in permalink:
-                                    header += "  - /cards/" + root_lab(shortcut) + "\n"
-                                    header += "  - /" + folder + "/cards/" + root_lab(shortcut) + "\n"
-
-                                # include the legacy section
-                                if len(legacy_from) > 0:
-                                    for item in legacy_from:
-                                        header += str(item)
-                                else:
-                                    header += "---"
+                                # generate the header for each card
+                                header = generate_header(folder, permalink, shortcut, order)
 
                                 # add autogenerated links to whitelist
                                 whiteList += permalink + "\n"