diff --git a/project/src/services/DatabaseService.ts b/project/src/services/DatabaseService.ts
index f22a450d..2c534efe 100644
--- a/project/src/services/DatabaseService.ts
+++ b/project/src/services/DatabaseService.ts
@@ -1,7 +1,9 @@
 import { error } from "console";
 import { inject, injectable } from "tsyringe";
 import { IGlobals } from "@spt/models/eft/common/IGlobals";
+import { IAchievement } from "@spt/models/eft/common/tables/IAchievement";
 import { IMatch } from "@spt/models/eft/common/tables/IMatch";
+import { IQuest } from "@spt/models/eft/common/tables/IQuest";
 import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem";
 import { ITrader } from "@spt/models/eft/common/tables/ITrader";
 import { IBots } from "@spt/models/spt/bots/IBots";
@@ -155,6 +157,19 @@ export class DatabaseService
         return this.databaseServer.getTables().templates!;
     }
 
+    /**
+     * @returns assets/database/templates/achievements.json
+     */
+    public getAchievements(): IAchievement[]
+    {
+        if (!this.databaseServer.getTables().templates!.achievements)
+        {
+            throw new error(this.localisationService.getText("database-data_at_path_missing", "assets/database/templates/achievements.json"));
+        }
+
+        return this.databaseServer.getTables().templates!.achievements!;
+    }
+
     /**
      * @returns assets/database/templates/items.json
      */
@@ -168,6 +183,19 @@ export class DatabaseService
         return this.databaseServer.getTables().templates!.items!;
     }
 
+    /**
+     * @returns assets/database/templates/items.json
+     */
+    public getQuests(): Record<string, IQuest>
+    {
+        if (!this.databaseServer.getTables().templates!.quests)
+        {
+            throw new error(this.localisationService.getText("database-data_at_path_missing", "assets/database/templates/quests.json"));
+        }
+
+        return this.databaseServer.getTables().templates!.quests!;
+    }
+
     /**
      * @returns assets/database/traders/
      */
diff --git a/project/src/services/ProfileFixerService.ts b/project/src/services/ProfileFixerService.ts
index 0e6d3457..7019eb6c 100644
--- a/project/src/services/ProfileFixerService.ts
+++ b/project/src/services/ProfileFixerService.ts
@@ -19,7 +19,7 @@ import { ICoreConfig } from "@spt/models/spt/config/ICoreConfig";
 import { IRagfairConfig } from "@spt/models/spt/config/IRagfairConfig";
 import { ILogger } from "@spt/models/spt/utils/ILogger";
 import { ConfigServer } from "@spt/servers/ConfigServer";
-import { DatabaseServer } from "@spt/servers/DatabaseServer";
+import { DatabaseService } from "@spt/services/DatabaseService";
 import { LocalisationService } from "@spt/services/LocalisationService";
 import { ICloner } from "@spt/utils/cloners/ICloner";
 import { HashUtil } from "@spt/utils/HashUtil";
@@ -36,6 +36,7 @@ export class ProfileFixerService
     constructor(
         @inject("WinstonLogger") protected logger: ILogger,
         @inject("Watermark") protected watermark: Watermark,
+        @inject("DatabaseService") protected databaseService: DatabaseService,
         @inject("HideoutHelper") protected hideoutHelper: HideoutHelper,
         @inject("InventoryHelper") protected inventoryHelper: InventoryHelper,
         @inject("TraderHelper") protected traderHelper: TraderHelper,
@@ -45,7 +46,6 @@ export class ProfileFixerService
         @inject("TimeUtil") protected timeUtil: TimeUtil,
         @inject("JsonUtil") protected jsonUtil: JsonUtil,
         @inject("HashUtil") protected hashUtil: HashUtil,
-        @inject("DatabaseServer") protected databaseServer: DatabaseServer,
         @inject("ConfigServer") protected configServer: ConfigServer,
         @inject("RecursiveCloner") protected cloner: ICloner,
     )
@@ -74,6 +74,8 @@ export class ProfileFixerService
 
         if (pmcProfile.Hideout)
         {
+            const globals = this.databaseService.getGlobals();
+
             this.migrateImprovements(pmcProfile);
             this.addMissingBonusesProperty(pmcProfile);
             this.addMissingWallImprovements(pmcProfile);
@@ -88,7 +90,7 @@ export class ProfileFixerService
 
             if (pmcProfile.Hideout.Areas.find((x) => x.type === HideoutAreas.GENERATOR)!.slots.length
               < 6
-              + this.databaseServer.getTables().globals!.config.SkillsSettings.HideoutManagement.EliteSlots.Generator
+              + globals.config.SkillsSettings.HideoutManagement.EliteSlots.Generator
                   .Slots
             )
             {
@@ -96,7 +98,7 @@ export class ProfileFixerService
                 this.addEmptyObjectsToHideoutAreaSlots(
                     HideoutAreas.GENERATOR,
                     6
-                    + this.databaseServer.getTables().globals!.config.SkillsSettings.HideoutManagement.EliteSlots
+                    + globals.config.SkillsSettings.HideoutManagement.EliteSlots
                         .Generator.Slots,
                     pmcProfile,
                 );
@@ -105,7 +107,7 @@ export class ProfileFixerService
             if (
                 pmcProfile.Hideout.Areas.find((x) => x.type === HideoutAreas.WATER_COLLECTOR)!.slots.length
                 < 1
-                + this.databaseServer.getTables().globals!.config.SkillsSettings.HideoutManagement.EliteSlots
+                + globals.config.SkillsSettings.HideoutManagement.EliteSlots
                     .WaterCollector.Slots
             )
             {
@@ -113,7 +115,7 @@ export class ProfileFixerService
                 this.addEmptyObjectsToHideoutAreaSlots(
                     HideoutAreas.WATER_COLLECTOR,
                     1
-                    + this.databaseServer.getTables().globals!.config.SkillsSettings.HideoutManagement.EliteSlots
+                    + globals.config.SkillsSettings.HideoutManagement.EliteSlots
                         .WaterCollector.Slots,
                     pmcProfile,
                 );
@@ -122,7 +124,7 @@ export class ProfileFixerService
             if (
                 pmcProfile.Hideout.Areas.find((x) => x.type === HideoutAreas.AIR_FILTERING)!.slots.length
                 < 3
-                + this.databaseServer.getTables().globals!.config.SkillsSettings.HideoutManagement.EliteSlots
+                + globals.config.SkillsSettings.HideoutManagement.EliteSlots
                     .AirFilteringUnit.Slots
             )
             {
@@ -130,7 +132,7 @@ export class ProfileFixerService
                 this.addEmptyObjectsToHideoutAreaSlots(
                     HideoutAreas.AIR_FILTERING,
                     3
-                    + this.databaseServer.getTables().globals!.config.SkillsSettings.HideoutManagement.EliteSlots
+                    + globals.config.SkillsSettings.HideoutManagement.EliteSlots
                         .AirFilteringUnit.Slots,
                     pmcProfile,
                 );
@@ -140,7 +142,7 @@ export class ProfileFixerService
             if (
                 pmcProfile.Hideout.Areas.find((x) => x.type === HideoutAreas.BITCOIN_FARM)!.slots.length
                 < 50
-                + this.databaseServer.getTables().globals!.config.SkillsSettings.HideoutManagement.EliteSlots
+                + globals.config.SkillsSettings.HideoutManagement.EliteSlots
                     .BitcoinFarm.Slots
             )
             {
@@ -148,7 +150,7 @@ export class ProfileFixerService
                 this.addEmptyObjectsToHideoutAreaSlots(
                     HideoutAreas.BITCOIN_FARM,
                     50
-                    + this.databaseServer.getTables().globals!.config.SkillsSettings.HideoutManagement.EliteSlots
+                    + globals.config.SkillsSettings.HideoutManagement.EliteSlots
                         .BitcoinFarm.Slots,
                     pmcProfile,
                 );
@@ -178,9 +180,9 @@ export class ProfileFixerService
             return;
         }
 
-        const db = this.databaseServer.getTables();
-        const hideoutStandAreaDb = db.hideout!.areas.find((x) => x.type === HideoutAreas.WEAPON_STAND)!;
-        const hideoutStandSecondaryAreaDb = db.hideout!.areas.find((x) => x.parentArea === hideoutStandAreaDb._id)!;
+        const hideout = this.databaseService.getHideout();
+        const hideoutStandAreaDb = hideout.areas.find((area) => area.type === HideoutAreas.WEAPON_STAND)!;
+        const hideoutStandSecondaryAreaDb = hideout.areas.find((x) => x.parentArea === hideoutStandAreaDb._id)!;
         const stageCurrentAt = hideoutStandAreaDb.stages[weaponStandArea.level];
         const hideoutStandStashId = pmcProfile.Inventory.hideoutAreaStashes[HideoutAreas.WEAPON_STAND];
         const hideoutSecondaryStashId = pmcProfile.Inventory.hideoutAreaStashes[HideoutAreas.WEAPON_STAND_SECONDARY];
@@ -281,8 +283,8 @@ export class ProfileFixerService
             return;
         }
 
-        const db = this.databaseServer.getTables();
-        const placeOfFameAreaDb = db.hideout!.areas.find((area) => area.type === HideoutAreas.PLACE_OF_FAME);
+        const placeOfFameAreaDb = this.databaseService.getHideout().areas
+            .find((area) => area.type === HideoutAreas.PLACE_OF_FAME);
         if (!placeOfFameAreaDb)
         {
             return;
@@ -464,7 +466,7 @@ export class ProfileFixerService
         {
             const taskConditionKeysToRemove: string[] = [];
             const activeRepeatableQuests = this.getActiveRepeatableQuests(pmcProfile.RepeatableQuests);
-            const achievements = this.databaseServer.getTables().templates!.achievements;
+            const achievements = this.databaseService.getAchievements();
 
             // Loop over TaskConditionCounters objects and add once we want to remove to counterKeysToRemove
             for (const [key, taskConditionCounter] of Object.entries(pmcProfile.TaskConditionCounters))
@@ -648,9 +650,8 @@ export class ProfileFixerService
     protected addMissingWallImprovements(pmcProfile: IPmcData): void
     {
         const profileWallArea = pmcProfile.Hideout.Areas.find((x) => x.type === HideoutAreas.EMERGENCY_WALL)!;
-        const wallDb = this.databaseServer
-            .getTables()
-            .hideout!.areas.find((x) => x.type === HideoutAreas.EMERGENCY_WALL);
+        const wallDb = this.databaseService.getHideout().areas
+            .find((x) => x.type === HideoutAreas.EMERGENCY_WALL);
 
         if (profileWallArea.level > 0)
         {
@@ -779,7 +780,7 @@ export class ProfileFixerService
     {
         const profileHideoutAreas = pmcProfile.Hideout.Areas;
         const profileBonuses = pmcProfile.Bonuses;
-        const dbHideoutAreas = this.databaseServer.getTables().hideout!.areas;
+        const dbHideoutAreas = this.databaseService.getHideout().areas;
 
         for (const area of profileHideoutAreas)
         {
@@ -870,7 +871,7 @@ export class ProfileFixerService
      */
     public checkForOrphanedModdedItems(sessionId: string, fullProfile: ISptProfile): void
     {
-        const itemsDb = this.databaseServer.getTables().templates!.items;
+        const itemsDb = this.databaseService.getItems();
         const pmcProfile = fullProfile.characters.pmc;
 
         // Get items placed in root of stash
@@ -972,7 +973,7 @@ export class ProfileFixerService
             }
         }
 
-        const clothing = this.databaseServer.getTables().templates!.customization;
+        const clothing = this.databaseService.getTemplates().customization;
         for (const [_, suitId] of Object.entries(fullProfile.suits))
         {
             if (!clothing[suitId])
@@ -1196,8 +1197,8 @@ export class ProfileFixerService
         }
 
         // Iterate over clothing
-        const customizationDb = this.databaseServer.getTables().templates!.customization;
-        const customizationDbArray = Object.values(this.databaseServer.getTables().templates!.customization);
+        const customizationDb = this.databaseService.getTemplates().customization;
+        const customizationDbArray = Object.values(customizationDb);
         const playerIsUsec = pmcProfile.Info.Side.toLowerCase() === "usec";
 
         // Check Head
@@ -1265,7 +1266,7 @@ export class ProfileFixerService
             return;
         }
 
-        const profileTemplates = this.databaseServer.getTables().templates?.profiles[fullProfile.info.edition];
+        const profileTemplates = this.databaseService.getTemplates().profiles[fullProfile.info.edition];
         if (!profileTemplates)
         {
             return;
@@ -1363,7 +1364,7 @@ export class ProfileFixerService
             }
 
             // Bonus lacks id, find matching hideout area / stage / bonus
-            for (const area of this.databaseServer.getTables().hideout!.areas)
+            for (const area of this.databaseService.getHideout().areas)
             {
                 // TODO: skip if no stages
                 for (const stageIndex in area.stages)
@@ -1428,7 +1429,7 @@ export class ProfileFixerService
      */
     protected removeOrphanedQuests(pmcProfile: IPmcData): void
     {
-        const quests = this.databaseServer.getTables().templates!.quests;
+        const quests = this.databaseService.getQuests();
         const profileQuests = pmcProfile.Quests;
 
         const repeatableQuests: IRepeatableQuest[] = [];
diff --git a/project/src/services/mod/CustomItemService.ts b/project/src/services/mod/CustomItemService.ts
index a639e9e6..146b5a54 100644
--- a/project/src/services/mod/CustomItemService.ts
+++ b/project/src/services/mod/CustomItemService.ts
@@ -8,9 +8,8 @@ import {
     NewItemDetails,
     NewItemFromCloneDetails,
 } from "@spt/models/spt/mod/NewItemDetails";
-import { IDatabaseTables } from "@spt/models/spt/server/IDatabaseTables";
 import { ILogger } from "@spt/models/spt/utils/ILogger";
-import { DatabaseServer } from "@spt/servers/DatabaseServer";
+import { DatabaseService } from "@spt/services/DatabaseService";
 import { ItemBaseClassService } from "@spt/services/ItemBaseClassService";
 import { ICloner } from "@spt/utils/cloners/ICloner";
 import { HashUtil } from "@spt/utils/HashUtil";
@@ -18,18 +17,15 @@ import { HashUtil } from "@spt/utils/HashUtil";
 @injectable()
 export class CustomItemService
 {
-    protected tables: IDatabaseTables;
-
     constructor(
         @inject("WinstonLogger") protected logger: ILogger,
         @inject("HashUtil") protected hashUtil: HashUtil,
-        @inject("DatabaseServer") protected databaseServer: DatabaseServer,
+        @inject("DatabaseService") protected databaseServer: DatabaseService,
         @inject("ItemHelper") protected itemHelper: ItemHelper,
         @inject("ItemBaseClassService") protected itemBaseClassService: ItemBaseClassService,
         @inject("RecursiveCloner") protected cloner: ICloner,
     )
     {
-        this.tables = this.databaseServer.getTables();
     }
 
     /**
@@ -165,7 +161,7 @@ export class CustomItemService
      */
     protected addToItemsDb(newItemId: string, itemToAdd: ITemplateItem): void
     {
-        this.tables.templates.items[newItemId] = itemToAdd;
+        this.databaseServer.getItems()[newItemId] = itemToAdd;
     }
 
     /**
@@ -176,7 +172,7 @@ export class CustomItemService
      */
     protected addToHandbookDb(newItemId: string, parentId: string, priceRoubles: number): void
     {
-        this.tables.templates.handbook.Items.push({ Id: newItemId, ParentId: parentId, Price: priceRoubles });
+        this.databaseServer.getTemplates().handbook.Items.push({ Id: newItemId, ParentId: parentId, Price: priceRoubles });
     }
 
     /**
@@ -192,7 +188,7 @@ export class CustomItemService
      */
     protected addToLocaleDbs(localeDetails: Record<string, LocaleDetails>, newItemId: string): void
     {
-        const languages = this.tables.locales.languages;
+        const languages = this.databaseServer.getLocales().languages;
         for (const shortNameKey in languages)
         {
             // Get locale details passed in, if not provided by caller use first record in newItemDetails.locales
@@ -203,9 +199,10 @@ export class CustomItemService
             }
 
             // Create new record in locale file
-            this.tables.locales.global[shortNameKey][`${newItemId} Name`] = newLocaleDetails.name;
-            this.tables.locales.global[shortNameKey][`${newItemId} ShortName`] = newLocaleDetails.shortName;
-            this.tables.locales.global[shortNameKey][`${newItemId} Description`] = newLocaleDetails.description;
+            const globals = this.databaseServer.getLocales();
+            globals.global[shortNameKey][`${newItemId} Name`] = newLocaleDetails.name;
+            globals.global[shortNameKey][`${newItemId} ShortName`] = newLocaleDetails.shortName;
+            globals.global[shortNameKey][`${newItemId} Description`] = newLocaleDetails.description;
         }
     }
 
@@ -216,7 +213,7 @@ export class CustomItemService
      */
     protected addToFleaPriceDb(newItemId: string, fleaPriceRoubles: number): void
     {
-        this.tables.templates.prices[newItemId] = fleaPriceRoubles;
+        this.databaseServer.getTemplates().prices[newItemId] = fleaPriceRoubles;
     }
 
     /**
@@ -225,8 +222,6 @@ export class CustomItemService
      */
     protected addToWeaponShelf(newItemId: string): void
     {
-        this.databaseServer.getTables().templates.items;
-
         // Ids for wall stashes in db
         const wallStashIds = ["6401c7b213d9b818bf0e7dd7", "64381b582bb1c5dedd0fc925", "64381b6e44b37a080d0245b9"];
         for (const wallId of wallStashIds)
@@ -259,22 +254,21 @@ export class CustomItemService
         const baseWeaponModObject = {};
 
         // Get all slots weapon has and create a dictionary of them with possible mods that slot into each
-        const weaponSltos = weapon[1]._props.Slots;
-        for (const slot of weaponSltos)
+        const weaponSlots = weapon[1]._props.Slots;
+        for (const slot of weaponSlots)
         {
             baseWeaponModObject[slot._name] = slot._props.filters[0].Filter;
         }
 
         // Get PMCs
-        const usec = this.databaseServer.getTables().bots!.types.usec;
-        const bear = this.databaseServer.getTables().bots!.types.bear;
+        const botTypes = this.databaseServer.getBots().types;
 
         // Add weapon base+mods into bear/usec data
-        usec.inventory.mods[weaponTpl] = baseWeaponModObject;
-        bear.inventory.mods[weaponTpl] = baseWeaponModObject;
+        botTypes.usec.inventory.mods[weaponTpl] = baseWeaponModObject;
+        botTypes.bear.inventory.mods[weaponTpl] = baseWeaponModObject;
 
         // Add weapon to array of allowed weapons + weighting to be picked
-        usec.inventory.equipment[weaponSlot][weaponTpl] = weaponWeight;
-        bear.inventory.equipment[weaponSlot][weaponTpl] = weaponWeight;
+        botTypes.usec.inventory.equipment[weaponSlot][weaponTpl] = weaponWeight;
+        botTypes.bear.inventory.equipment[weaponSlot][weaponTpl] = weaponWeight;
     }
 }