diff --git a/components/content/ListSystems.vue b/components/content/ListSystems.vue
index cd2ff4b55eaa8cf180992f1d7900fc33b3e677d5..1cfeee0910b54c50ee40dbe278171b7c1fabcdd9 100644
--- a/components/content/ListSystems.vue
+++ b/components/content/ListSystems.vue
@@ -1,46 +1,71 @@
 <script setup lang="ts">
 const props = defineProps<{
-    headers: Array<Object>
-    systems: Array<Object>
-
+  headers: Array<Object>;
+  systems: Array<Object>;
 }>();
-const itemsPerParge = ref(25)
-const search = ref('')
-const sortBy = ref([{ key: 'system', order: 'asc' }])
+const itemsPerParge = ref(25);
+const search = ref("");
+const sortBy = ref([{ key: "system", order: "asc" }]);
 
 function filterOnlyCapsText(value, query, item) {
-    if (value != null && query != null) {
-        if (typeof value === 'string') {
-            return value.toString().toLowerCase().indexOf(query.toLowerCase()) !== -1
-        }
-        if (typeof value == 'object') {
-            if (value?.name) {
-                return value.name.toString().toLowerCase().indexOf(query.toLowerCase()) !== -1
-            }
-        }
+  if (value != null && query != null) {
+    if (typeof value === "string") {
+      return value.toString().toLowerCase().indexOf(query.toLowerCase()) !== -1;
+    }
+    if (typeof value == "object") {
+      if (value?.name) {
+        return (
+          value.name.toString().toLowerCase().indexOf(query.toLowerCase()) !==
+          -1
+        );
+      }
     }
-    return false
+  }
+  return false;
 }
 </script>
 <template>
-    <v-card flat color="transparent" class="my-5">
-        <v-toolbar>
-            <v-toolbar-title>Defense Systems</v-toolbar-title>
+  <v-card flat color="transparent" class="my-5">
+    <v-toolbar>
+      <v-toolbar-title>Defense Systems</v-toolbar-title>
 
-            <v-text-field v-model="search" density="compact" variant="underlined" prepend-inner-icon="mdi-magnify"
-                label="Search for defense systems" single-line hide-details class="mx-2" clearable></v-text-field>
-        </v-toolbar>
-        <v-data-table :items-per-page="itemsPerParge" v-model:sort-by="sortBy" :headers="props.headers" density="compact"
-            :custom-filter="filterOnlyCapsText" :items="props.systems" :search="search">
-            <template #[`item.system`]="{ item }">
-                <v-chip variant="text" link :to="`${item.columns.system.path}`">{{
-                    item.columns.system.name }}</v-chip>
-            </template>
-            <template #[`item.article`]="{ item }">
-                <ArticleDoi v-if="item.columns?.article" :doi="item.columns.article.doi"
-                    :title="item.columns.article?.title" :abstract="item.columns.article?.abstract" :divider="false"
-                    :enumerate="false" />
-            </template>
-        </v-data-table>
-    </v-card>
+      <v-text-field
+        v-model="search"
+        density="compact"
+        variant="underlined"
+        prepend-inner-icon="mdi-magnify"
+        label="Search for defense systems"
+        single-line
+        hide-details
+        class="mx-2"
+        clearable
+      ></v-text-field>
+    </v-toolbar>
+    <v-data-table-virtual
+      height="800"
+      :items-per-page="itemsPerParge"
+      v-model:sort-by="sortBy"
+      :headers="props.headers"
+      density="compact"
+      :custom-filter="filterOnlyCapsText"
+      :items="props.systems"
+      :search="search"
+    >
+      <template #[`item.system`]="{ item }">
+        <v-chip variant="text" link :to="`${item.columns.system.path}`">{{
+          item.columns.system.name
+        }}</v-chip>
+      </template>
+      <template #[`item.article`]="{ item }">
+        <ArticleDoi
+          v-if="item.columns?.article"
+          :doi="item.columns.article.doi"
+          :title="item.columns.article?.title"
+          :abstract="item.columns.article?.abstract"
+          :divider="false"
+          :enumerate="false"
+        />
+      </template>
+    </v-data-table-virtual>
+  </v-card>
 </template>
\ No newline at end of file