diff --git a/src/entities/item.ts b/src/entities/item.ts
index 0b83f22..1ec5aac 100644
--- a/src/entities/item.ts
+++ b/src/entities/item.ts
@@ -18,7 +18,7 @@ export class Item extends BaseEntity {
   name!: string
 
   @Property()
-  description?: string
+  description: string = ''
 
   @Enum(() => ItemType)
   itemType!: ItemType
diff --git a/src/events/gameMaster/assetManager/characterHair/create.ts b/src/events/gameMaster/assetManager/characterHair/create.ts
index cbd8df4..eabfdd4 100644
--- a/src/events/gameMaster/assetManager/characterHair/create.ts
+++ b/src/events/gameMaster/assetManager/characterHair/create.ts
@@ -1,6 +1,5 @@
 import { BaseEvent } from '#application/base/baseEvent'
 import { CharacterHair } from '#entities/characterHair'
-import characterRepository from '#repositories/characterRepository'
 
 export default class CharacterHairCreateEvent extends BaseEvent {
   public listen(): void {
diff --git a/src/events/gameMaster/assetManager/characterHair/update.ts b/src/events/gameMaster/assetManager/characterHair/update.ts
index 64bdf8d..aebf6c5 100644
--- a/src/events/gameMaster/assetManager/characterHair/update.ts
+++ b/src/events/gameMaster/assetManager/characterHair/update.ts
@@ -2,7 +2,6 @@ import { BaseEvent } from '#application/base/baseEvent'
 import { CharacterGender } from '#application/enums'
 import { UUID } from '#application/types'
 import CharacterHairRepository from '#repositories/characterHairRepository'
-import characterRepository from '#repositories/characterRepository'
 import SpriteRepository from '#repositories/spriteRepository'
 
 type Payload = {
diff --git a/src/events/gameMaster/assetManager/characterType/update.ts b/src/events/gameMaster/assetManager/characterType/update.ts
index 4f048ee..47107a7 100644
--- a/src/events/gameMaster/assetManager/characterType/update.ts
+++ b/src/events/gameMaster/assetManager/characterType/update.ts
@@ -1,4 +1,3 @@
-import CharacterRepository from '#repositories/characterRepository'
 import { UUID } from '#application/types'
 import { BaseEvent } from '#application/base/baseEvent'
 import CharacterTypeRepository from '#repositories/characterTypeRepository'
diff --git a/src/events/gameMaster/assetManager/item/update.ts b/src/events/gameMaster/assetManager/item/update.ts
index e4c494d..ea2b84d 100644
--- a/src/events/gameMaster/assetManager/item/update.ts
+++ b/src/events/gameMaster/assetManager/item/update.ts
@@ -1,55 +1,49 @@
-import { ItemType, ItemRarity } from '@prisma/client'
-import { Server } from 'socket.io'
-
-import { gameMasterLogger } from '#application/logger'
-import prisma from '#application/prisma'
-import { TSocket } from '#application/types'
-import characterRepository from '#repositories/characterRepository'
+import { BaseEvent } from '#application/base/baseEvent'
+import ItemRepository from '#repositories/itemRepository'
+import { ItemType, ItemRarity } from '#application/enums'
+import { UUID } from '#application/types'
+import SpriteRepository from '#repositories/spriteRepository'
 
 type Payload = {
-  id: string
+  id: UUID
   name: string
-  description: string | null
+  description: string
   itemType: ItemType
   stackable: boolean
   rarity: ItemRarity
-  spriteId: string | null
+  spriteId: UUID
 }
 
-export default class ItemUpdateEvent {
-  constructor(
-    private readonly io: Server,
-    private readonly socket: TSocket
-  ) {}
-
+export default class ItemUpdateEvent extends BaseEvent {
   public listen(): void {
     this.socket.on('gm:item:update', this.handleEvent.bind(this))
   }
 
   private async handleEvent(data: Payload, callback: (success: boolean) => void): Promise<void> {
-    const character = await characterRepository.getById(this.socket.characterId as number)
-    if (!character) return callback(false)
-
-    if (character.role !== 'gm') {
-      return callback(false)
-    }
 
     try {
-      await prisma.item.update({
-        where: { id: data.id },
-        data: {
-          name: data.name,
-          description: data.description,
-          itemType: data.itemType,
-          stackable: data.stackable,
-          rarity: data.rarity,
-          spriteId: data.spriteId
-        }
-      })
+      if (!(await this.isCharacterGM())) return
+
+      const itemRepository = new ItemRepository()
+      const item = await itemRepository.getById(data.id)
+      if (!item) return callback(false)
+
+      const spriteRepository = new SpriteRepository()
+      const sprite = await spriteRepository.getById(data.spriteId)
+      if (!sprite) return callback(false)
+
+      await item
+        .setName(data.name)
+        .setDescription(data.description)
+        .setItemType(data.itemType)
+        .setStackable(data.stackable)
+        .setRarity(data.rarity)
+        .setSprite(sprite)
+        .save()
 
       return callback(true)
     } catch (error) {
-      gameMasterLogger.error(`Error updating item: ${error instanceof Error ? error.message : String(error)}`)
+      console.error(error)
       return callback(false)
     }
   }