diff --git a/fggl/gfx/ogl4/models.cpp b/fggl/gfx/ogl4/models.cpp
index 3849fb77385ae8bf0750389b17fa4ac84316741c..1f566eab65a6959e31b2eaa1def3f4bfa997ee17 100644
--- a/fggl/gfx/ogl4/models.cpp
+++ b/fggl/gfx/ogl4/models.cpp
@@ -64,11 +64,11 @@ namespace fggl::gfx::ogl4 {
 		modelComp.drawType = ogl::Primative::TRIANGLE;
 	}
 
-	StaticModel* StaticModelRenderer::uploadMesh(assets::AssetGUID guid, const data::Mesh &mesh) {
+	StaticModel* StaticModelRenderer::uploadMesh(assets::AssetGUID guid, const data::Mesh &mesh, bool allowCache) {
 		assert( m_assets != nullptr );
 
 		// if the asset has already been uploaded, we don't need to do anything
-		if ( m_assets->has(guid) ) {
+		if ( allowCache && m_assets->has(guid) ) {
 			m_assets->require(guid);
 			return m_assets->get<StaticModel>(guid);
 		}
@@ -80,7 +80,11 @@ namespace fggl::gfx::ogl4 {
 		modelAsset->elements = setupIndexBuffer(modelAsset->vao, mesh.indexList());
 		modelAsset->elementCount = mesh.indexCount();
 		modelAsset->drawType = ogl::Primative::TRIANGLE;
-		m_assets->set(guid, modelAsset);
+
+		// if caching is enabled, then use the cache
+		if ( allowCache ) {
+			m_assets->set(guid, modelAsset);
+		}
 
 		return modelAsset;
 	}
@@ -106,8 +110,8 @@ namespace fggl::gfx::ogl4 {
 	#ifdef FGGL_ALLOW_DEFERRED_UPLOAD
 		void StaticModelRenderer::resolveModels(entity::EntityManager &world) {
 			// FIXME: this needs something reactive or performance will suck.
-			auto renderables = world.find<data::StaticMesh>();
-			for (const auto &renderable : renderables) {
+			auto renderableEnts = world.find<data::StaticMesh>();
+			for (const auto &renderable : renderableEnts) {
 				auto *currModel = world.tryGet<StaticModel>(renderable);
 				if (currModel != nullptr) {
 					continue;
@@ -116,7 +120,7 @@ namespace fggl::gfx::ogl4 {
 				auto &meshComp = world.get<data::StaticMesh>(renderable);
 
 				// model loading (should be via asset system)
-				auto loadedModel = uploadMesh("DEFER_ENT_"+ std::to_string((uint64_t)renderable), meshComp.mesh);
+				auto loadedModel = uploadMesh("DEFER_ENT_"+ std::to_string((uint64_t)renderable), meshComp.mesh, false);
 				auto loadedShader = m_shaders->get(meshComp.pipeline);
 
 				// splice the loaded asset into the ecs
diff --git a/include/fggl/gfx/ogl4/models.hpp b/include/fggl/gfx/ogl4/models.hpp
index 1306735f8f54cbe29f0ab548a20871dba47ece30..42241dce6de66403c6d72b3a34fe2d220f5a96e3 100644
--- a/include/fggl/gfx/ogl4/models.hpp
+++ b/include/fggl/gfx/ogl4/models.hpp
@@ -81,7 +81,7 @@ namespace fggl::gfx::ogl4 {
 			StaticModelRenderer &operator=(const StaticModelRenderer &other) = delete;
 			StaticModelRenderer &operator=(StaticModelRenderer &&other) = delete;
 
-			StaticModel* uploadMesh(assets::AssetGUID guid, const data::Mesh& mesh);
+			StaticModel* uploadMesh(assets::AssetGUID guid, const data::Mesh& mesh, bool allowCache=true);
 			StaticModelGPU* uploadMesh2(const assets::AssetGUID& meshName, const data::Mesh& mesh);
 
 			void render(entity::EntityManager &world) {