diff --git a/src/application/utilities.ts b/src/application/utilities.ts
index f2484f9..5f4f9fc 100644
--- a/src/application/utilities.ts
+++ b/src/application/utilities.ts
@@ -28,7 +28,7 @@ export function getDomain() {
   return window.location.hostname.split('.').slice(-2).join('.')
 }
 
-export async function downloadCache<T extends { id: string }>(endpoint: string, storage: BaseStorage<T>) {
+export async function downloadCache<T extends { id: string; updatedAt: Date }>(endpoint: string, storage: BaseStorage<T>) {
   const request = await fetch(`${config.server_endpoint}/cache/${endpoint}`)
   const response = (await request.json()) as HttpResponse<T[]>
 
@@ -38,7 +38,15 @@ export async function downloadCache<T extends { id: string }>(endpoint: string,
   }
 
   const items = response.data ?? []
+
   for (const item of items) {
-    await storage.add(item)
+    let overwrite = false
+    const existingItem = await storage.get(item.id)
+
+    if (!existingItem || item.updatedAt > existingItem.updatedAt) {
+      overwrite = true
+    }
+
+    await storage.add(item, overwrite)
   }
 }
\ No newline at end of file
diff --git a/src/components/screens/Loading.vue b/src/components/screens/Loading.vue
index 91a82bb..e943041 100644
--- a/src/components/screens/Loading.vue
+++ b/src/components/screens/Loading.vue
@@ -15,11 +15,7 @@
 </template>
 
 <script setup lang="ts" async>
-import config from '@/application/config'
-import type { HttpResponse, MapObject } from '@/application/types'
-import type { BaseStorage } from '@/storage/baseStorage'
 import { CharacterHairStorage, CharacterTypeStorage, MapObjectStorage, MapStorage, SpriteStorage, TileStorage } from '@/storage/storages'
-// import type { Map } from '@/application/types'
 import { useGameStore } from '@/stores/gameStore'
 import { ref } from 'vue'
 import { downloadCache } from '@/application/utilities'
@@ -29,14 +25,10 @@ const gameStore = useGameStore()
 const totalItems = ref(0)
 const currentItem = ref(0)
 
-const tileStorage = new TileStorage()
-const mapStorage = new MapStorage()
-const mapObjectStorage = new MapObjectStorage()
-
 Promise.all([
-  downloadCache('tiles', tileStorage),
-  downloadCache('maps', mapStorage),
-  downloadCache('map_objects', mapObjectStorage),
+  downloadCache('tiles', new TileStorage()),
+  downloadCache('maps', new MapStorage()),
+  downloadCache('map_objects', new MapObjectStorage()),
   downloadCache('sprites', new SpriteStorage()),
   downloadCache('character_types', new CharacterTypeStorage()),
   downloadCache('character_hair', new CharacterHairStorage())