diff --git a/java/clientmod/src/client/kotlin/org/tux/wynnreporter/client/help/tonfa.kt b/java/clientmod/src/client/kotlin/org/tux/wynnreporter/client/help/tonfa.kt
new file mode 100644
index 0000000..0d37cdb
--- /dev/null
+++ b/java/clientmod/src/client/kotlin/org/tux/wynnreporter/client/help/tonfa.kt
@@ -0,0 +1,4 @@
+package org.tux.wynnreporter.client.help
+
+class tonfa {
+}
diff --git a/java/clientmod/src/client/kotlin/org/tux/wynnreporter/client/readers/InventoryReader.kt b/java/clientmod/src/client/kotlin/org/tux/wynnreporter/client/readers/InventoryReader.kt
index 71da2c3..15b0f36 100644
--- a/java/clientmod/src/client/kotlin/org/tux/wynnreporter/client/readers/InventoryReader.kt
+++ b/java/clientmod/src/client/kotlin/org/tux/wynnreporter/client/readers/InventoryReader.kt
@@ -5,6 +5,8 @@ import kotlinx.coroutines.channels.onFailure
 import net.minecraft.client.MinecraftClient
 import net.minecraft.client.gui.screen.Screen
 import net.minecraft.client.gui.screen.ingame.GenericContainerScreen
+import net.minecraft.entity.LivingEntity
+import net.minecraft.item.ItemStack
 import org.tux.wynnreporter.Wynnreporter
 import org.tux.wynnreporter.client.structs.InventoryPayload
 import org.tux.wynnreporter.client.structs.InventoryPayloadItem
@@ -23,6 +25,7 @@ class InventoryReader(
             return
         }
 
+
         val itemList = mutableListOf<InventoryPayloadItem>()
         // iterate over size
         for(i in 0 until inventory.size()) {
@@ -32,6 +35,7 @@ class InventoryReader(
             }
             val item = stack.item;
             val components = stack.components
+            item.get
             val componentMap = mutableMapOf<String, String>()
             components.forEach { component ->
                 componentMap[component.type.toString()] = component.value.toString()
@@ -66,4 +70,4 @@ class InventoryReader(
 
 
 
-}
\ No newline at end of file
+}
diff --git a/ts/src/apiserver/contract.ts b/ts/src/apiserver/contract.ts
index fb4be6c..2db598b 100644
--- a/ts/src/apiserver/contract.ts
+++ b/ts/src/apiserver/contract.ts
@@ -3,7 +3,6 @@ import { type } from "arktype";
 
 const con = initContract();
 
-
 const ingameauth = con.router({
   challenge: {
     description: "generate a challenge for the client to solve",
diff --git a/ts/src/bot/common/guild.ts b/ts/src/bot/common/guild.ts
index 6ec17af..66a2327 100644
--- a/ts/src/bot/common/guild.ts
+++ b/ts/src/bot/common/guild.ts
@@ -8,7 +8,8 @@ import * as md from 'ts-markdown-builder';
 export const formGuildInfoMessage = async (guild_id: string, sql:Sql): Promise<CreateMessageOptions & InteractionCallbackOptions> => {
   const result = await sql`
 
-with ranked as (select
+with ranked as (
+  select
   uid,
   name,
   prefix,
@@ -16,8 +17,9 @@ with ranked as (select
   xp,
   territories,
   wars,
-  rank() over (order by xp desc) as xp_rank
+  dense_rank() over (order by level desc, xp desc) as xp_rank
   from wynn.guild_info
+  where level is not null
 )
 select * from ranked
 where ranked.uid = ${guild_id}
@@ -36,7 +38,7 @@ where ranked.uid = ${guild_id}
     md.heading("overview"),
     `[${guild.prefix}] ${guild.name}
 level: ${guild.level}
-guild xp rank: ${guild.xp_rank === 1000 ? "1000+" : guild.xp_rank}
+guild xp rank: ${guild.xp_rank >= 1000 ? "1000+" : guild.xp_rank}
 xp: ${guild.xp}
 territories: ${guild.territories}
 wars: ${guild.wars}`,