diff --git a/components/ServerDbTable.vue b/components/ServerDbTable.vue
index 214e3d44b757680a6f49776ef3961d3209b0914e..ad8b636da2f926080da71d032a43d4c8c7fc265e 100644
--- a/components/ServerDbTable.vue
+++ b/components/ServerDbTable.vue
@@ -7,6 +7,7 @@ import { useDisplay } from "vuetify";
 import { toValue, useThrottleFn } from '@vueuse/core'
 import type { FacetInputItem, FilterItem } from '@/components/AutocompleteMeiliFacets.vue'
 import { useMeiliSearch } from "#imports"
+import type { SearchResponse } from 'meilisearch'
 // import { saveAs } from "file-saver";
 export interface SortItem {
     key: string,
@@ -57,9 +58,11 @@ const props = withDefaults(defineProps<Props>(), {
 
 });
 const slots = useSlots()
+const client = useMeiliSearchRef()
 const sortByRef = toRef(props.sortBy)
 const emit = defineEmits(["refresh:search"])
-const { search: msSearch, result: msResult } = useMeiliSearch(props.autocompleteMeiliFacetsProps.db)
+const msResult = ref()
+// const { search: msSearch, result: msResult } = useMeiliSearch(props.autocompleteMeiliFacetsProps.db)
 const search: Ref<string> = ref("");
 const filterOrSearch: Ref<FilterItem[] | null> = ref(null)
 const hitsPerPage: Ref<number> = ref(25)
@@ -120,7 +123,7 @@ watch([paginationParams, msSortBy, page], ([newParams, newSort, newPage]) => {
     }
 })
 
-onBeforeMount(async () => {
+onMounted(async () => {
     searchOrFilter()
     emitRefreshRes()
 })
@@ -181,7 +184,15 @@ async function searchOrFilter() {
         try {
             loading.value = true
             const q = search.value
-            await msSearch(q, { ...paginationParams.value, filter: toValue(computedFilter), sort: msSortBy.value })
+            const response = await client
+                .index(props.autocompleteMeiliFacetsProps.db)
+                .search(q, {
+                    ...paginationParams.value,
+                    filter: toValue(computedFilter),
+                    sort: msSortBy.value
+                })
+            // await msSearch(q, { ...paginationParams.value, filter: toValue(computedFilter), sort: msSortBy.value })
+            msResult.value = response
         } catch (error: any) {
             filterError.value = error
             console.log(error)
@@ -219,13 +230,23 @@ watch(search, () => {
 
 
 async function downloadData() {
-    pendingDownloadData.value = true
+
     try {
-        const { data } = await useAsyncMeiliSearch({
-            index: props.autocompleteMeiliFacetsProps.db,
-            params: { ...toValue(notPaginatedParams), filter: toValue(computedFilter), sort: toValue(msSortBy) },
-            query: toValue(search),
-        })
+        pendingDownloadData.value = true
+
+        const data = await client
+            .index(props.autocompleteMeiliFacetsProps.db)
+            .search(
+                toValue(search),
+                {
+                    ...toValue(notPaginatedParams), filter: toValue(computedFilter), sort: toValue(msSortBy)
+                })
+
+        // const { data } = await useAsyncMeiliSearch({
+        //     index: props.autocompleteMeiliFacetsProps.db,
+        //     params: { ...toValue(notPaginatedParams), filter: toValue(computedFilter), sort: toValue(msSortBy) },
+        //     query: toValue(search),
+        // })
 
         useCsvDownload(data, props.columnsToDownload, props.title)
     } finally {
diff --git a/components/content/RefseqDb.vue b/components/content/RefseqDb.vue
index cf6322e59f6780a8a41ed714574b6436dc4b85f9..3738334770f379ba0b33beaeedcb389bb1bc0e73 100644
--- a/components/content/RefseqDb.vue
+++ b/components/content/RefseqDb.vue
@@ -25,76 +25,39 @@ const cellPlotMargin = ref({
     marginRight: 50
 })
 
+const client = useMeiliSearchRef()
 
-onBeforeMount(async () => {
-    const { data } = await useAsyncMeiliSearch({
-        index: toValue(dbName), query: "", params: {
-            facets: ["*"],
-            filter: [],
-            page: 1,
-            hitsPerPage: 25,
-
-        }
-    })
-    await getAllHits({
-        index: toValue(dbName), query: "", params: {
-            facets: ["*"],
-            filter: [],
-            // page: 1,
-            // hitsPerPage: 25,
-            limit: 500000,
-            sort: ["type:asc"]
-
-        }
-    })
-    autocompleteMeiliFacetsProps.value.facetDistribution = toValue(data)?.facetDistribution
-    // allHitsDb.value = toValue(data)?.hits
-    const { data: taxo } = await useAsyncMeiliSearch({
-        index: toValue("refseqtaxo"), query: "", params: {
-            facets: ["*"],
-            filter: [],
-            page: 1,
-            hitsPerPage: 25,
-        }
-    })
-    taxonomyFacet.value = toValue(taxo)?.facetDistribution
-})
 onMounted(async () => {
-
-    const { data } = await useAsyncMeiliSearch({
-        index: toValue(dbName), query: "", params: {
+    try {
+        const data = await client.index(toValue(dbName)).search("", {
             facets: ["*"],
             filter: [],
             page: 1,
             hitsPerPage: 25,
-            // limit: 500000,
-            // sort: ["type:asc"]
-        }
-    })
+        })
+        autocompleteMeiliFacetsProps.value.facetDistribution = data?.facetDistribution
+    } catch (error) {
+    }
     await getAllHits({
         index: toValue(dbName), query: "", params: {
             facets: ["*"],
             filter: [],
-            // page: 1,
-            // hitsPerPage: 25,
             limit: 500000,
             sort: ["type:asc"]
 
         }
     })
-    autocompleteMeiliFacetsProps.value.facetDistribution = toValue(data)?.facetDistribution
-    // allHitsDb.value = toValue(data)?.hits
-
-    const { data: taxo } = await useAsyncMeiliSearch({
-        index: toValue("refseqtaxo"), query: "", params: {
+    try {
+        const taxo = await client.index("refseqtaxo").search("", {
             facets: ["*"],
             filter: [],
             page: 1,
             hitsPerPage: 25,
-        }
-    })
-    taxonomyFacet.value = toValue(taxo)?.facetDistribution
+        })
+        taxonomyFacet.value = taxo?.facetDistribution
+    } catch (error) {
 
+    }
 })
 
 const { serialize } = useSerialize()
@@ -221,16 +184,14 @@ async function getAllHits(params: { index: string, params: Record<string, any>,
 
     pendingAllHits.value = true
     try {
-        const { data, error } = await useAsyncMeiliSearch({
-            ...params,
-            index: "refseqsanitized",
-            params: {
+        const data = await client
+            .index("refseqsanitized")
+            .search("", {
                 ...params.params,
-
                 'attributesToRetrieve': ['type', 'Assembly', ...toValue(availableTaxo)]
-            }
-        })
-        allHits.value = data.value
+            })
+
+        allHits.value = data
     } finally {
         pendingAllHits.value = false
 
diff --git a/components/content/StructureDb.vue b/components/content/StructureDb.vue
index 380ce2bc38afb1e874ffa773d63cc951a3dd0c12..35eff255100596d973202a4b76fc47ec7cace17b 100644
--- a/components/content/StructureDb.vue
+++ b/components/content/StructureDb.vue
@@ -15,34 +15,29 @@ interface Item {
 const sortBy: Ref<SortItem[]> = ref([{ key: 'System', order: "asc" }])
 const itemValue = ref("id");
 const dbName = ref("structure")
+const client = useMeiliSearchRef()
 
-onBeforeMount(async () => {
-    const { data } = await useAsyncMeiliSearch({
-        index: toValue(dbName), query: "", params: {
+onMounted(async () => {
+
+    try {
+        const data = await client.index(toValue(dbName)).search("", {
             facets: ["*"],
             filter: [],
             page: 1,
             hitsPerPage: 25,
-        }
-    })
-    autocompleteMeiliFacetsProps.value.facetDistribution = toValue(data)?.facetDistribution
+        })
+        autocompleteMeiliFacetsProps.value.facetDistribution = data?.facetDistribution
+    } catch (error) {
+        throw createError("Unable to get structures")
 
-})
+    }
 
 
-onMounted(async () => {
-    const { data } = await useAsyncMeiliSearch({
-        index: toValue(dbName), query: "", params: {
-            facets: ["*"],
-            filter: [],
-            page: 1,
-            hitsPerPage: 25,
-        }
-    })
-    autocompleteMeiliFacetsProps.value.facetDistribution = toValue(data)?.facetDistribution
 
 })
 
+
+
 const autocompleteMeiliFacetsProps = ref<AutocompleteMeiliFacetProps>({
     db: toValue(dbName),
     facets: [
diff --git a/components/content/SystemDb.vue b/components/content/SystemDb.vue
index 81f591a26d7ae9a80edf60e6eb9db2dd594271ec..700214dca75cb45b313a8bb5e6b6fb9d2beed878 100644
--- a/components/content/SystemDb.vue
+++ b/components/content/SystemDb.vue
@@ -5,31 +5,36 @@ const sortBy: Ref<SortItem[]> = ref([{ key: 'title', order: "asc" }])
 const itemValue = ref("title");
 const dbName = ref("systems")
 
-onBeforeMount(async () => {
-    const { data } = await useAsyncMeiliSearch({
-        index: toValue(dbName), query: "", params: {
-            facets: ["*"],
-            filter: [],
-            page: 1,
-            hitsPerPage: 25,
-        }
-    })
+const client = useMeiliSearchRef()
 
-    autocompleteMeiliFacetsProps.value.facetDistribution = toValue(data)?.facetDistribution
 
-})
-onMounted(async () => {
-    const { data } = await useAsyncMeiliSearch({
-        index: toValue(dbName), query: "", params: {
-            facets: ["*"],
-            filter: [],
-            page: 1,
-            hitsPerPage: 25,
-        }
-    })
+// onBeforeMount(async () => {
+//     const { data } = await useAsyncMeiliSearch({
+//         index: toValue(dbName), query: "", params: {
+//             facets: ["*"],
+//             filter: [],
+//             page: 1,
+//             hitsPerPage: 25,
+//         }
+//     })
 
-    autocompleteMeiliFacetsProps.value.facetDistribution = toValue(data)?.facetDistribution
+//     autocompleteMeiliFacetsProps.value.facetDistribution = toValue(data)?.facetDistribution
 
+// })
+onMounted(async () => {
+    try {
+        const data = await client
+            .index(toValue(dbName))
+            .search("", {
+                facets: ["*"],
+                filter: [],
+                page: 1,
+                hitsPerPage: 25,
+            })
+        autocompleteMeiliFacetsProps.value.facetDistribution = data?.facetDistribution
+    } catch (error) {
+        throw createError("Unable to get list of systems")
+    }
 })
 
 
@@ -118,18 +123,19 @@ const columnsToDownload = ref(['title', 'doi', 'Sensor', 'Activator', 'Effector'
 
         <template #[`item.title`]="{ item }">
             <v-chip color="info" link :to="`/defense-systems/${item.title.toLowerCase()}`">{{
-                item.title
-            }}</v-chip>
+        item.title
+    }}</v-chip>
         </template>
 
         <template #[`item.doi`]="{ item }">
-            <ArticleDoi v-if="item?.doi" :doi="item.doi" :abstract="item?.abstract" :divider="false" :enumerate="false" />
+            <ArticleDoi v-if="item?.doi" :doi="item.doi" :abstract="item?.abstract" :divider="false"
+                :enumerate="false" />
         </template>
         <template #[`item.PFAM`]="{ item }">
             <pfam-chips v-if="item?.PFAM" :pfams="item.PFAM"></pfam-chips>
         </template>
         <template #[`item.contributors`]="{ item }">
-            <CollapsibleChips v-if="item?.contributors" :items="item.contributors.map(it => ({ title: it }))">
+            <CollapsibleChips v-if="item?.contributors" :items="item.contributors.map(it => ({ title: it })) ">
             </CollapsibleChips>
         </template>
     </ServerDbTable>