diff --git a/tests/discovery.py b/tests/discovery.py
new file mode 100644
index 0000000..cb2d481
--- /dev/null
+++ b/tests/discovery.py
@@ -0,0 +1,39 @@
+import os
+from pathlib import Path
+
+import dotenv
+from nostr_sdk import Keys
+
+from nostr_dvm.tasks import content_discovery_test
+from nostr_dvm.utils.admin_utils import AdminConfig
+from nostr_dvm.utils.backend_utils import keep_alive
+
+
+def playground():
+    # Generate an optional Admin Config, in this case, whenever we give our DVMs this config, they will (re)broadcast
+    # their NIP89 announcement
+    # You can create individual admins configs and hand them over when initializing the dvm,
+    # for example to whilelist users or add to their balance.
+    # If you use this global config, options will be set for all dvms that use it.
+    admin_config = AdminConfig()
+    admin_config.REBROADCAST_NIP89 = False
+    admin_config.UPDATE_PROFILE = False
+
+    discovery_test = content_discovery_test.build_example("Dicovery Test DVM", "discovery_content_test", admin_config)
+    discovery_test.run()
+
+    keep_alive()
+
+
+if __name__ == '__main__':
+    env_path = Path('.env')
+    if not env_path.is_file():
+        with open('.env', 'w') as f:
+            print("Writing new .env file")
+            f.write('')
+    if env_path.is_file():
+        print(f'loading environment from {env_path.resolve()}')
+        dotenv.load_dotenv(env_path, verbose=True, override=True)
+    else:
+        raise FileNotFoundError(f'.env file not found at {env_path} ')
+    playground()
diff --git a/ui/noogle/src/components/NoteTable.vue b/ui/noogle/src/components/NoteTable.vue
index a9712f3..7a1bdc1 100644
--- a/ui/noogle/src/components/NoteTable.vue
+++ b/ui/noogle/src/components/NoteTable.vue
@@ -1,7 +1,8 @@
 <template>
   <EasyDataTable class="customize-table" header-text-direction="left"  table-class-name="customize-table"
                  :headers="headers"
-                 :items="data" :sort-by="sortBy"
+                 :items="data"
+                 :sort-by="sortBy"
                  :sort-type="sortType">
    <template #item-content="{content, author, authorurl, avatar, indicator, links}">
 
@@ -12,7 +13,7 @@
      <img class="avatar" v-else src="@/assets/nostr-purple.svg" />
 
      <a class="purple" :href="authorurl" target="_blank">{{ author }}</a>
-    <div class="time"  :data-tip="indicator.time">
+    <div class="time">
           {{indicator.time.split("T")[1].split("Z")[0].trim()}}
           {{indicator.time.split("T")[0].split("-")[2].trim()}}.{{indicator.time.split("T")[0].split("-")[1].trim()}}.{{indicator.time.split("T")[0].split("-")[0].trim().slice(2)}}
         </div>
@@ -48,17 +49,19 @@
 
 import type {Header, Item, SortType} from "vue3-easy-data-table";
 import store from '../store';
+import {types} from "sass";
+import Null = types.Null;
 defineProps<{
   data?: []
 
 }>()
 
-const sortBy = "indicator.time";
-const sortType: SortType = "desc";
+const sortBy: String = "index";
+const sortType: SortType = "asc";
 
 const headers: Header[] = [
-  { text: "Results:", value: "content", fixed:true},
- // { text: "Time", value: "indicator.time", sortable: true, },
+  { text: "Results:", value: "content", fixed: true},
+ // { text: "Time", value: "indicator.index", sortable: true, },
 ];
 
 
diff --git a/ui/noogle/src/components/RecommendationGeneration.vue b/ui/noogle/src/components/RecommendationGeneration.vue
index 3c51e2f..65086a1 100644
--- a/ui/noogle/src/components/RecommendationGeneration.vue
+++ b/ui/noogle/src/components/RecommendationGeneration.vue
@@ -22,7 +22,7 @@ import {data} from "autoprefixer";
 import {requestProvider} from "webln";
 import Newnote from "@/components/Newnote.vue";
 import SummarizationGeneration from "@/components/SummarizationGeneration.vue"
-import {post_note, schedule, copyurl, copyinvoice, sleep, getEvents, get_user_infos, nextInput} from "../components/helper/Helper.vue"
+import {post_note, schedule, copyurl, copyinvoice, sleep, getEvents, get_user_infos, nextInput, getEventsOriginalOrder} from "../components/helper/Helper.vue"
 import amberSignerService from "./android-signer/AndroidSigner";
 import StringUtil from "@/components/helper/string.ts";
 
@@ -229,10 +229,10 @@ async function  listen() {
                   let event_etags = JSON.parse(event.content)
                   if (event_etags.length > 0) {
                     for (let etag of event_etags) {
-                      const eventid = EventId.fromHex(etag[1])
+                      const eventid = EventId.fromHex(etag[1]).toHex()
                       entries.push(eventid)
                     }
-                    const events = await getEvents(entries)
+                    const events = await getEventsOriginalOrder(entries)
                     let authors = []
                     for (const evt of events) {
                       authors.push(evt.author)
@@ -241,6 +241,7 @@ async function  listen() {
                       if (authors.length > 0) {
                       let profiles = await get_user_infos(authors)
                         let items = []
+                        let index = 0
                       for (const evt of events) {
                         let p = profiles.find(record => record.author === evt.author.toHex())
                         let bech32id = evt.id.toBech32()
@@ -267,9 +268,12 @@ async function  listen() {
                               "nostrudel": nostrudelurl
                             },
                             avatar: picture,
-                            indicator: {"time": evt.createdAt.toHumanDatetime()}
+                            index: index,
+                            indicator: {"time": evt.createdAt.toHumanDatetime(), "index": index}
                           })
+                           index = index+1
                         }
+
                       }
 
                         dvms.find(i => i.id === event.author.toHex()).result.length = 0
diff --git a/ui/noogle/src/components/Search.vue b/ui/noogle/src/components/Search.vue
index ddaf721..5ac1745 100644
--- a/ui/noogle/src/components/Search.vue
+++ b/ui/noogle/src/components/Search.vue
@@ -269,7 +269,7 @@ async function  listen() {
                   let event_etags = JSON.parse(event.content)
                   if (event_etags.length > 0) {
                     for (let etag of event_etags) {
-                      const eventid = EventId.fromHex(etag[1])
+                      const eventid = EventId.parse(etag[1]).toHex() //a bit unnecessary
                       entries.push(eventid)
                     }
                     const events = await getEvents(entries)
@@ -341,7 +341,7 @@ async function  listen() {
                       let infos = await get_user_infos(authors)
 
                       for (const profile of infos) {
-                        console.log(profile["author"])
+                        //console.log(profile["author"])
                         if (profiles.findIndex(e => e.id === profile["author"]) === -1 && profile["profile"]["name"] !== "" ) {
                           profiles.push({
                             id: profile["author"],
diff --git a/ui/noogle/src/components/helper/Helper.vue b/ui/noogle/src/components/helper/Helper.vue
index a8752ee..92b6734 100644
--- a/ui/noogle/src/components/helper/Helper.vue
+++ b/ui/noogle/src/components/helper/Helper.vue
@@ -2,7 +2,7 @@
 import {defineComponent} from 'vue'
 import store from "@/store";
 import amberSignerService from "@/components/android-signer/AndroidSigner";
-import {Duration, Event, EventBuilder, Filter, Keys, PublicKey, Tag, Timestamp} from "@rust-nostr/nostr-sdk";
+import {Duration, Event, EventBuilder, EventId, Filter, Keys, PublicKey, Tag, Timestamp} from "@rust-nostr/nostr-sdk";
 import miniToastr from "mini-toastr/mini-toastr";
 import VueNotifications from "vue-notifications";
 
@@ -73,11 +73,37 @@ export async function schedule(note, datetopost) {
 }
 
 export async function getEvents(eventids) {
-  const event_filter = new Filter().ids(eventids)
+  let ids = []
+  for (let eid of eventids){
+    ids.push(EventId.parse(eid))
+  }
+  const event_filter = new Filter().ids(ids)
   let client = store.state.client
   return await client.getEventsOf([event_filter], Duration.fromSecs(5))
-}
 
+}
+export async function getEventsOriginalOrder(eventids) {
+  let ids = []
+  for (let eid of eventids){
+    ids.push(EventId.parse(eid))
+  }
+  const event_filter = new Filter().ids(ids)
+  let client = store.state.client
+  let results =  await client.getEventsOf([event_filter], Duration.fromSecs(5))
+  console.log(results.length)
+  for (let e of results){
+    console.log(e.id.toHex())
+  }
+
+  let final = []
+  for (let f of eventids){
+    let note = results.find(value => value.id.toHex() === f)
+    console.log(note)
+    final.push(note)
+  }
+
+  return final
+}
 
 
 export function nextInput(e) {