diff --git a/r5dev/datacache/mdlcache.cpp b/r5dev/datacache/mdlcache.cpp
index a436406c..b9c7d8cb 100644
--- a/r5dev/datacache/mdlcache.cpp
+++ b/r5dev/datacache/mdlcache.cpp
@@ -27,9 +27,9 @@ CStudioFallbackHandler g_StudioMdlFallbackHandler;
 //-----------------------------------------------------------------------------
 studiohdr_t* CMDLCache::FindMDL(CMDLCache* const cache, const MDLHandle_t handle, void* a3)
 {
-    studiodata_t* const pStudioData = cache->GetStudioData(handle);
+    studiodata_t* const studioData = cache->GetStudioData(handle);
 
-    if (!pStudioData)
+    if (!studioData)
     {
         studiohdr_t* const pStudioHdr = GetErrorModel();
 
@@ -44,46 +44,46 @@ studiohdr_t* CMDLCache::FindMDL(CMDLCache* const cache, const MDLHandle_t handle
         return pStudioHdr;
     }
 
-    studiocache_t* studioCache = pStudioData->GetStudioCache();
+    studiomodelcache_t* modelCache = studioData->GetStudioCache();
 
     // Store error and empty fallback models.
-    if (IS_VALID_DATACACHE_HANDLE(studioCache))
+    if (IS_VALID_DATACACHE_HANDLE(modelCache))
     {
-        studiohdr_t* const pStudioHDR = pStudioData->GetStudioCache()->GetStudioHdr();
+        studiohdr_t* const studioHdr = studioData->GetStudioCache()->GetStudioHdr();
 
-        if (pStudioHDR)
+        if (studioHdr)
         {
             // Typically, you would only check for '(m_nFlags & STUDIODATA_ERROR_MODEL)',
             // but for some reason this game doesn't have this flag set on that model.
-            if (!HasErrorModel() && ((pStudioData->m_nFlags & STUDIODATA_ERROR_MODEL) 
-                || V_ComparePath(pStudioHDR->name, ERROR_MODEL)))
+            if (!HasErrorModel() && ((studioData->flags & STUDIODATA_ERROR_MODEL) 
+                || V_ComparePath(studioHdr->name, ERROR_MODEL)))
             {
-                g_StudioMdlFallbackHandler.SetFallbackModel(pStudioHDR, handle);
+                g_StudioMdlFallbackHandler.SetFallbackModel(studioHdr, handle);
             }
         }
     }
 
     const int nFlags = STUDIOHDR_FLAGS_NEEDS_DEFERRED_ADDITIVE | STUDIOHDR_FLAGS_OBSOLETE;
 
-    if ((pStudioData->m_nFlags & nFlags))
+    if ((studioData->flags & nFlags))
     {
-        if (studioCache)
+        if (modelCache)
         {
             if (a3)
             {
-                FindCachedMDL(cache, pStudioData, a3);
-                studioCache = pStudioData->m_pStudioCache;
+                FindCachedMDL(cache, studioData, a3);
+                modelCache = studioData->modelCache;
             }
 
-            studiohdr_t* const pStudioHdr = studioCache->GetStudioHdr();
+            studiohdr_t* const pStudioHdr = modelCache->GetStudioHdr();
 
             if (pStudioHdr)
                 return pStudioHdr;
 
-            return FindUncachedMDL(cache, handle, pStudioData, a3);
+            return FindUncachedMDL(cache, handle, studioData, a3);
         }
 
-        studioanimcache_t* const animCache = pStudioData->m_pAnimCache;
+        studioanimcache_t* const animCache = studioData->animCache;
 
         if (animCache)
         {
@@ -93,7 +93,7 @@ studiohdr_t* CMDLCache::FindMDL(CMDLCache* const cache, const MDLHandle_t handle
                 return pStudioHdr;
         }
     }
-    return FindUncachedMDL(cache, handle, pStudioData, a3);
+    return FindUncachedMDL(cache, handle, studioData, a3);
 }
 
 //-----------------------------------------------------------------------------
@@ -106,7 +106,7 @@ void CMDLCache::FindCachedMDL(CMDLCache* const cache, studiodata_t* const pStudi
 {
     if (a3)
     {
-        AUTO_LOCK(pStudioData->m_Mutex);
+        AUTO_LOCK(pStudioData->mutex);
 
         *(_QWORD*)((int64_t)a3 + 0x880) = *(_QWORD*)&pStudioData->pad[0x24];
         int64_t v6 = *(_QWORD*)&pStudioData->pad[0x24];
@@ -114,7 +114,7 @@ void CMDLCache::FindCachedMDL(CMDLCache* const cache, studiodata_t* const pStudi
             *(_QWORD*)(v6 + 0x878) = (int64_t)a3;
         *(_QWORD*)&pStudioData->pad[0x24] = (int64_t)a3;
         *(_QWORD*)((int64_t)a3 + 0x870) = (int64_t)cache;
-        *(_WORD*)((int64_t)a3 + 0x888) = pStudioData->m_Handle;
+        *(_WORD*)((int64_t)a3 + 0x888) = pStudioData->modelHandle;
     }
 }
 
@@ -128,95 +128,95 @@ void CMDLCache::FindCachedMDL(CMDLCache* const cache, studiodata_t* const pStudi
 //-----------------------------------------------------------------------------
 studiohdr_t* CMDLCache::FindUncachedMDL(CMDLCache* const cache, const MDLHandle_t handle, studiodata_t* pStudioData, void* a4)
 {
-    AUTO_LOCK(pStudioData->m_Mutex);
+    AUTO_LOCK(pStudioData->mutex);
 
-    const char* szModelName = cache->GetModelName(handle);
-    const size_t nFileNameLen = strlen(szModelName);
+    const char* modelName = cache->GetModelName(handle);
+    const size_t fileNameLen = strlen(modelName);
 
-    studiohdr_t* pStudioHdr = nullptr;
+    studiohdr_t* studioHdr = nullptr;
 
-    if (nFileNameLen < 5 ||
-        (Q_stricmp(&szModelName[nFileNameLen - 5], ".rmdl") != 0) &&
-        (Q_stricmp(&szModelName[nFileNameLen - 5], ".rrig") != 0) &&
-        (Q_stricmp(&szModelName[nFileNameLen - 5], ".rpak") != 0))
+    if (fileNameLen < 5 ||
+        (Q_stricmp(&modelName[fileNameLen - 5], ".rmdl") != 0) &&
+        (Q_stricmp(&modelName[fileNameLen - 5], ".rrig") != 0) &&
+        (Q_stricmp(&modelName[fileNameLen - 5], ".rpak") != 0))
     {
-        pStudioHdr = GetErrorModel();
+        studioHdr = GetErrorModel();
         if (!IsKnownBadModel(handle))
         {
-            if (!pStudioHdr)
-                Error(eDLL_T::ENGINE, EXIT_FAILURE, "Attempted to load old model \"%s\" and \"%s\" couldn't be loaded.\n", szModelName, ERROR_MODEL);
+            if (!studioHdr)
+                Error(eDLL_T::ENGINE, EXIT_FAILURE, "Attempted to load old model \"%s\" and \"%s\" couldn't be loaded.\n", modelName, ERROR_MODEL);
             else
-                Error(eDLL_T::ENGINE, NO_ERROR, "Attempted to load old model \"%s\"; replacing with \"%s\".\n", szModelName, ERROR_MODEL);
+                Error(eDLL_T::ENGINE, NO_ERROR, "Attempted to load old model \"%s\"; replacing with \"%s\".\n", modelName, ERROR_MODEL);
         }
 
-        return pStudioHdr;
+        return studioHdr;
     }
 
-    pStudioData->m_bSearchingModelName = true;
-    g_pRTech->StringToGuid(szModelName);
-    pStudioData->m_bSearchingModelName = false;
+    pStudioData->processing = true;
+    g_pRTech->StringToGuid(modelName);
+    pStudioData->processing = false;
 
-    if (!pStudioData->m_pStudioCache)
+    if (!pStudioData->modelCache)
     {
         studioanimcache_t* const animCache = pStudioData->GetAnimCache();
         if (animCache)
         {
-            pStudioHdr = animCache->GetStudioHdr();
+            studioHdr = animCache->GetStudioHdr();
         }
         else
         {
-            pStudioHdr = GetErrorModel();
+            studioHdr = GetErrorModel();
             if (!IsKnownBadModel(handle))
             {
-                if (!pStudioHdr)
-                    Error(eDLL_T::ENGINE, EXIT_FAILURE, "Model \"%s\" not found and \"%s\" couldn't be loaded.\n", szModelName, ERROR_MODEL);
+                if (!studioHdr)
+                    Error(eDLL_T::ENGINE, EXIT_FAILURE, "Model \"%s\" not found and \"%s\" couldn't be loaded.\n", modelName, ERROR_MODEL);
                 else
-                    Error(eDLL_T::ENGINE, NO_ERROR, "Model \"%s\" not found; replacing with \"%s\".\n", szModelName, ERROR_MODEL);
+                    Error(eDLL_T::ENGINE, NO_ERROR, "Model \"%s\" not found; replacing with \"%s\".\n", modelName, ERROR_MODEL);
             }
 
-            return pStudioHdr;
+            return studioHdr;
         }
     }
     else
     {
         FindCachedMDL(cache, pStudioData, a4);
-        studiocache_t* const dataCache = pStudioData->GetStudioCache();
+        studiomodelcache_t* const modelCache = pStudioData->GetStudioCache();
 
-        if (dataCache)
+        if (modelCache)
         {
-            if (dataCache == DC_INVALID_HANDLE)
+            if (modelCache == DC_INVALID_HANDLE)
             {
-                pStudioHdr = GetErrorModel();
+                studioHdr = GetErrorModel();
                 if (!IsKnownBadModel(handle))
                 {
-                    if (!pStudioHdr)
-                        Error(eDLL_T::ENGINE, EXIT_FAILURE, "Model \"%s\" has bad studio data and \"%s\" couldn't be loaded.\n", szModelName, ERROR_MODEL);
+                    if (!studioHdr)
+                        Error(eDLL_T::ENGINE, EXIT_FAILURE, "Model \"%s\" has bad studio data and \"%s\" couldn't be loaded.\n", modelName, ERROR_MODEL);
                     else
-                        Error(eDLL_T::ENGINE, NO_ERROR, "Model \"%s\" has bad studio data; replacing with \"%s\".\n", szModelName, ERROR_MODEL);
+                        Error(eDLL_T::ENGINE, NO_ERROR, "Model \"%s\" has bad studio data; replacing with \"%s\".\n", modelName, ERROR_MODEL);
                 }
             }
             else
-                pStudioHdr = dataCache->GetStudioHdr();
+                studioHdr = modelCache->GetStudioHdr();
         }
         else
         {
-            pStudioHdr = GetErrorModel();
+            studioHdr = GetErrorModel();
 
             if (!IsKnownBadModel(handle))
             {
-                if (!pStudioHdr)
-                    Error(eDLL_T::ENGINE, EXIT_FAILURE, "Model \"%s\" has no studio data and \"%s\" couldn't be loaded.\n", szModelName, ERROR_MODEL);
+                if (!studioHdr)
+                    Error(eDLL_T::ENGINE, EXIT_FAILURE, "Model \"%s\" has no studio data and \"%s\" couldn't be loaded.\n", modelName, ERROR_MODEL);
                 else
-                    Error(eDLL_T::ENGINE, NO_ERROR, "Model \"%s\" has no studio data; replacing with \"%s\".\n", szModelName, ERROR_MODEL);
+                    Error(eDLL_T::ENGINE, NO_ERROR, "Model \"%s\" has no studio data; replacing with \"%s\".\n", modelName, ERROR_MODEL);
             }
         }
     }
 
-    assert(pStudioHdr);
-    return pStudioHdr;
+    assert(studioHdr);
+    return studioHdr;
 }
 
-studiocache_t* CMDLCache::GetStudioCache(const MDLHandle_t handle)
+studiomodelcache_t* CMDLCache::GetModelCache(const MDLHandle_t handle)
 {
     if (handle == MDLHANDLE_INVALID)
         return nullptr;
@@ -226,8 +226,8 @@ studiocache_t* CMDLCache::GetStudioCache(const MDLHandle_t handle)
     if (!studioData)
         return nullptr;
 
-    studiocache_t* const studioCache = studioData->GetStudioCache();
-    return studioCache;
+    studiomodelcache_t* const modelCache = studioData->GetStudioCache();
+    return modelCache;
 }
 
 //-----------------------------------------------------------------------------
@@ -238,15 +238,15 @@ studiocache_t* CMDLCache::GetStudioCache(const MDLHandle_t handle)
 //-----------------------------------------------------------------------------
 vcollide_t* CMDLCache::GetVCollide(CMDLCache* const cache, const MDLHandle_t handle)
 {
-    studiocache_t* const studioCache = cache->GetStudioCache(handle);
+    studiomodelcache_t* const modelCache = cache->GetModelCache(handle);
 
-    if (!IS_VALID_DATACACHE_HANDLE(studioCache))
+    if (!IS_VALID_DATACACHE_HANDLE(modelCache))
     {
         Warning(eDLL_T::ENGINE, "Attempted to load vcollide on model \"%s\" with invalid studio data!\n", cache->GetModelName(handle));
         return nullptr;
     }
 
-    studiophysicsref_t* const physicsCache = studioCache->GetPhysicsCache();
+    studiophysicsref_t* const physicsCache = modelCache->GetPhysicsCache();
 
     if (!physicsCache)
         return nullptr;
@@ -267,20 +267,20 @@ vcollide_t* CMDLCache::GetVCollide(CMDLCache* const cache, const MDLHandle_t han
 //-----------------------------------------------------------------------------
 void* CMDLCache::GetPhysicsGeometry(CMDLCache* const cache, const MDLHandle_t handle)
 {
-    studiocache_t* const studioCache = cache->GetStudioCache(handle);
+    studiomodelcache_t* const modelCache = cache->GetModelCache(handle);
 
-    if (!IS_VALID_DATACACHE_HANDLE(studioCache))
+    if (!IS_VALID_DATACACHE_HANDLE(modelCache))
     {
         Warning(eDLL_T::ENGINE, "Attempted to load physics geometry on model \"%s\" with invalid studio data!\n", cache->GetModelName(handle));
         return nullptr;
     }
 
-    studiophysicsref_t* const physicsCache = studioCache->GetPhysicsCache();
+    studiophysicsref_t* const physicsRef = modelCache->GetPhysicsCache();
 
-    if (!physicsCache)
+    if (!physicsRef)
         return nullptr;
 
-    CStudioPhysicsGeoms* const physicsGeoms = physicsCache->GetPhysicsGeoms();
+    CStudioPhysicsGeoms* const physicsGeoms = physicsRef->GetPhysicsGeoms();
 
     if (!physicsGeoms)
         return nullptr;
@@ -296,10 +296,10 @@ void* CMDLCache::GetPhysicsGeometry(CMDLCache* const cache, const MDLHandle_t ha
 //-----------------------------------------------------------------------------
 studiohwdata_t* CMDLCache::GetHardwareData(CMDLCache* const cache, const MDLHandle_t handle)
 {
-    const studiodata_t* pStudioData = nullptr; cache->GetStudioData(handle);
-    const studiocache_t* studioCache = cache->GetStudioCache(handle);
+    const studiodata_t* studioData = nullptr; cache->GetStudioData(handle);
+    const studiomodelcache_t* modelCache = cache->GetModelCache(handle);
 
-    if (!IS_VALID_DATACACHE_HANDLE(studioCache))
+    if (!IS_VALID_DATACACHE_HANDLE(modelCache))
     {
         if (!HasErrorModel())
         {
@@ -319,22 +319,22 @@ studiohwdata_t* CMDLCache::GetHardwareData(CMDLCache* const cache, const MDLHand
             }
         }
 
-        pStudioData = cache->GetStudioData(GetErrorModelHandle());
-        studioCache = pStudioData->GetStudioCache();
+        studioData = cache->GetStudioData(GetErrorModelHandle());
+        modelCache = studioData->GetStudioCache();
     }
     else
     {
-        pStudioData = cache->GetStudioData(handle);
+        studioData = cache->GetStudioData(handle);
     }
 
-    studiophysicsref_t* const physicsCache = studioCache->GetPhysicsCache();
+    studiophysicsref_t* const physicsRef = modelCache->GetPhysicsCache();
 
     AcquireSRWLockExclusive(g_pMDLLock);
-    CMDLCache__CheckData(physicsCache, 1i64); // !!! DECLARED INLINE IN < S3 !!!
+    CMDLCache__CheckData(physicsRef, 1i64); // !!! DECLARED INLINE IN < S3 !!!
     ReleaseSRWLockExclusive(g_pMDLLock);
 
-    if ((pStudioData->m_nFlags & STUDIODATA_FLAGS_STUDIOMESH_LOADED))
-        return pStudioData->GetHardwareDataRef()->GetHardwareData();
+    if ((studioData->flags & STUDIODATA_FLAGS_STUDIOMESH_LOADED))
+        return studioData->GetHardwareDataRef()->GetHardwareData();
 
     return nullptr;
 }
@@ -383,7 +383,9 @@ void VMDLCache::Detour(const bool bAttach) const
     DetourSetup(&CMDLCache__FindMDL, &CMDLCache::FindMDL, bAttach);
     DetourSetup(&CMDLCache__FindCachedMDL, &CMDLCache::FindCachedMDL, bAttach);
     DetourSetup(&CMDLCache__FindUncachedMDL, &CMDLCache::FindUncachedMDL, bAttach);
-    DetourSetup(&CMDLCache__GetHardwareData, &CMDLCache::GetHardwareData, bAttach);
+
     DetourSetup(&CMDLCache__GetVCollide, &CMDLCache::GetVCollide, bAttach);
     DetourSetup(&CMDLCache__GetPhysicsGeometry, &CMDLCache::GetPhysicsGeometry, bAttach);
+
+    DetourSetup(&CMDLCache__GetHardwareData, &CMDLCache::GetHardwareData, bAttach);
 }
diff --git a/r5dev/datacache/mdlcache.h b/r5dev/datacache/mdlcache.h
index 14df1352..b5f355df 100644
--- a/r5dev/datacache/mdlcache.h
+++ b/r5dev/datacache/mdlcache.h
@@ -6,6 +6,7 @@
 #include "datacache/idatacache.h"
 #include "datacache/imdlcache.h"
 #include "public/studio.h"
+#include "public/vphysics/phyfile.h"
 #include "public/vphysics/vcollide.h"
 #include "public/rtech/ipakfile.h"
 
@@ -96,7 +97,7 @@ private:
 	std::unordered_set<MDLHandle_t> m_BadMdlHandles;
 
 	// Don't spam on these handles when trying to get
-	// hardware data.
+	// cache data.
 	std::unordered_set<MDLHandle_t> m_SuppressedHandles;
 };
 
@@ -131,8 +132,8 @@ private:
 
 struct studiophysicsref_t
 {
-	inline CStudioVCollide* GetStudioVCollide() const { return m_pVCollide; }
-	inline CStudioPhysicsGeoms* GetPhysicsGeoms() const { return m_pPhysicsGeoms; }
+	inline CStudioVCollide* GetStudioVCollide() const { return vCollide; }
+	inline CStudioPhysicsGeoms* GetPhysicsGeoms() const { return physicsGeoms; }
 
 	int unk0;
 	int unk1;
@@ -140,53 +141,65 @@ struct studiophysicsref_t
 	int unk3;
 	int unk4;
 	int unk5;
-	CStudioVCollide* m_pVCollide;
-	CStudioPhysicsGeoms* m_pPhysicsGeoms;
+	CStudioVCollide* vCollide;
+	CStudioPhysicsGeoms* physicsGeoms;
 };
 
-struct studiocache_t
+struct studiomodelcache_t
 {
-	inline studiohdr_t* GetStudioHdr() const { return m_pStudioHdr; }
-	inline studiophysicsref_t* GetPhysicsCache() const { return m_pPhysicsCache; }
+	inline studiohdr_t* GetStudioHdr() const { return studioHeader; }
+	inline studiophysicsref_t* GetPhysicsCache() const { return physicsCache; }
 
-	studiohdr_t* m_pStudioHdr;
-	studiophysicsref_t* m_pPhysicsCache;
-	const char* m_szPropName;
-	uint8_t m_pUnknown[98];
+	studiohdr_t* studioHeader;
+	studiophysicsref_t* physicsCache;
+	const char* modelName;
+	char gap_18[8];
+	phyheader_t* physicsHeader;
+	void* unk_28;
+	void* staticPropData;
+	void* animRigs;
+	int numAnimRigs;
+	int unk_44;
+	int streamedDataSize;
+	char gap_4C[8];
+	int numAnimSeqs;
+	void* m_pAnimSeqs;
+	char gap_60[24];
 };
 
 struct studioanimcache_t
 {
-	inline studiohdr_t* GetStudioHdr() const { return m_pStudioHdr; }
+	inline studiohdr_t* GetStudioHdr() const { return studioHdr; }
 
-	studiohdr_t* m_pStudioHdr;
-	const char* m_pszRigName;
+	studiohdr_t* studioHdr;
+	const char* rigName;
 	int unk0;
-	int m_nSequenceCount;
-	void** m_pAnimSequences;
-	// TODO reverse the rest
+	int numSequences;
+	PakPage_t sequences;
+	int unk1;
+	int unk2;
 };
 
 // only models with type "mod_studio" have this data
 struct studiodata_t
 {
-	inline studiocache_t* GetStudioCache() const { return m_pStudioCache; }
-	inline studioanimcache_t* GetAnimCache() const { return m_pAnimCache; }
-	inline CStudioHWDataRef* GetHardwareDataRef() const { return m_pHardwareRef; }
+	inline studiomodelcache_t* GetStudioCache() const { return modelCache; }
+	inline studioanimcache_t* GetAnimCache() const { return animCache; }
+	inline CStudioHWDataRef* GetHardwareDataRef() const { return hardwareRef; }
 
-	studiocache_t* m_pStudioCache;
-	studioanimcache_t* m_pAnimCache; // !TODO: reverse struct.
-	unsigned short m_nRefCount;
-	unsigned short m_nFlags;
-	MDLHandle_t m_Handle;
+	studiomodelcache_t* modelCache;
+	studioanimcache_t* animCache;
+	unsigned short refCount;
+	unsigned short flags;
+	MDLHandle_t modelHandle;
 	void* Unk3; // ptr to flags and model string.
-	CStudioHWDataRef* m_pHardwareRef;
-	void* m_pMaterialTable; // contains a large table of CMaterialGlue objects.
+	CStudioHWDataRef* hardwareRef;
+	void* materialTable; // contains a large table of CMaterialGlue objects.
 	int Unk5;
 	char pad[72];
-	CThreadFastMutex m_Mutex;
-	bool m_bSearchingModelName;
-	PakHandle_t m_PakHandle;
+	CThreadFastMutex mutex;
+	bool processing;
+	PakHandle_t pakHandle;
 };
 
 extern CStudioFallbackHandler g_StudioMdlFallbackHandler;
@@ -198,7 +211,7 @@ public:
 	static void FindCachedMDL(CMDLCache* const cache, studiodata_t* const pStudioData, void* a3);
 	static studiohdr_t* FindUncachedMDL(CMDLCache* const cache, const MDLHandle_t handle, studiodata_t* const pStudioData, void* a4);
 
-	studiocache_t* GetStudioCache(const MDLHandle_t handle);
+	studiomodelcache_t* GetModelCache(const MDLHandle_t handle);
 	static vcollide_t* GetVCollide(CMDLCache* const cache, const MDLHandle_t handle);
 	static void* GetPhysicsGeometry(CMDLCache* const cache, const MDLHandle_t handle);
 
@@ -235,7 +248,7 @@ public:
 		studiodata_t* const studioData = m_MDLDict.Element(handle);
 		LeaveCriticalSection(&m_MDLMutex);
 
-		return &studioData->m_pMaterialTable;
+		return &studioData->materialTable;
 	}
 
 private:
@@ -248,10 +261,10 @@ inline studiohdr_t*(*CMDLCache__FindMDL)(CMDLCache* const pCache, const MDLHandl
 inline void(*CMDLCache__FindCachedMDL)(CMDLCache* const pCache, studiodata_t* const pStudioData, void* a3);
 inline studiohdr_t*(*CMDLCache__FindUncachedMDL)(CMDLCache* const pCache, MDLHandle_t handle, studiodata_t* const pStudioData, void* a4);
 
-inline studiohwdata_t* (*CMDLCache__GetHardwareData)(CMDLCache* const pCache, const MDLHandle_t handle);
 inline vcollide_t*(*CMDLCache__GetVCollide)(CMDLCache* const pCache, const MDLHandle_t handle);
 inline void* (*CMDLCache__GetPhysicsGeometry)(CMDLCache* const pCache, const MDLHandle_t handle);
 
+inline studiohwdata_t* (*CMDLCache__GetHardwareData)(CMDLCache* const pCache, const MDLHandle_t handle);
 inline bool(*CMDLCache__CheckData)(void* const ref, const int64_t type); // Probably incorrect name.
 
 inline CMDLCache* g_pMDLCache = nullptr;
@@ -265,9 +278,9 @@ class VMDLCache : public IDetour
 		LogFunAdr("CMDLCache::FindMDL", CMDLCache__FindMDL);
 		LogFunAdr("CMDLCache::FindCachedMDL", CMDLCache__FindCachedMDL);
 		LogFunAdr("CMDLCache::FindUncachedMDL", CMDLCache__FindUncachedMDL);
-		LogFunAdr("CMDLCache::GetHardwareData", CMDLCache__GetHardwareData);
 		LogFunAdr("CMDLCache::GetVCollide", CMDLCache__GetVCollide);
 		LogFunAdr("CMDLCache::GetPhysicsGeometry", CMDLCache__GetPhysicsGeometry);
+		LogFunAdr("CMDLCache::GetHardwareData", CMDLCache__GetHardwareData);
 		LogFunAdr("CMDLCache::CheckData", CMDLCache__CheckData);
 
 		LogVarAdr("g_MDLCache", g_pMDLCache);
diff --git a/r5dev/public/vphysics/phyfile.h b/r5dev/public/vphysics/phyfile.h
new file mode 100644
index 00000000..d29c31d2
--- /dev/null
+++ b/r5dev/public/vphysics/phyfile.h
@@ -0,0 +1,22 @@
+//===== Copyright � 1996-2005, Valve Corporation, All rights reserved. ======//
+//
+// Purpose: 
+//
+// $NoKeywords: $
+//===========================================================================//
+
+#ifndef PHYFILE_H
+#define PHYFILE_H
+#pragma once
+
+typedef struct phyheader_s
+{
+	int     size;
+	int     id;
+	short   numsolids;
+	short   align;
+	int     checksum; // checksum of source .rmdl file
+	int     keyvalueindex;
+} phyheader_t;
+
+#endif // PHYFILE_H
diff --git a/r5dev/vphysics/CMakeLists.txt b/r5dev/vphysics/CMakeLists.txt
index e350f513..3e66230e 100644
--- a/r5dev/vphysics/CMakeLists.txt
+++ b/r5dev/vphysics/CMakeLists.txt
@@ -10,6 +10,7 @@ add_sources( SOURCE_GROUP "Private"
 )
 
 add_sources( SOURCE_GROUP "Public"
+    "${ENGINE_SOURCE_DIR}/public/vphysics/phyfile.h"
     "${ENGINE_SOURCE_DIR}/public/vphysics/vcollide.h"
     "${ENGINE_SOURCE_DIR}/public/trace.h"
     "${ENGINE_SOURCE_DIR}/public/gametrace.h"