diff --git a/src/roblox.rs b/src/roblox.rs
index 3d6a7a5..409c2b5 100644
--- a/src/roblox.rs
+++ b/src/roblox.rs
@@ -4,7 +4,7 @@ use std::collections::HashSet;
 use clap::{Args,Subcommand};
 use anyhow::Result as AResult;
 use rbx_dom_weak::Instance;
-use strafesnet_deferred_loader::deferred_loader::{LoadFailureMode,MeshDeferredLoader,RenderConfigDeferredLoader};
+use strafesnet_deferred_loader::deferred_loader::LoadFailureMode;
 use rbxassetid::RobloxAssetId;
 use tokio::io::AsyncReadExt;
 
@@ -313,7 +313,8 @@ async fn download_assets(paths:Vec<PathBuf>,cookie:rbx_asset::cookie::Cookie)->A
 enum ConvertError{
 	IO(std::io::Error),
 	SNFMap(strafesnet_snf::map::Error),
-	RbxLoader(strafesnet_rbx_loader::ReadError),
+	RobloxRead(strafesnet_rbx_loader::ReadError),
+	RobloxLoad(strafesnet_rbx_loader::LoadError),
 }
 impl std::fmt::Display for ConvertError{
 	fn fmt(&self,f:&mut std::fmt::Formatter<'_>)->std::fmt::Result{
@@ -346,29 +347,12 @@ fn roblox_to_snf(pathlist:Vec<std::path::PathBuf>,output_folder:PathBuf)->AResul
 			let model=strafesnet_rbx_loader::read(
 				std::fs::File::open(path.as_path())
 				.map_err(ConvertError::IO)?
-			).map_err(ConvertError::RbxLoader)?;
+			).map_err(ConvertError::RobloxRead)?;
 
 			let mut place=model.into_place();
 			place.run_scripts();
 
-			let mut texture_deferred_loader=RenderConfigDeferredLoader::new();
-			let mut mesh_deferred_loader=MeshDeferredLoader::new();
-
-			let map_step1=strafesnet_rbx_loader::convert(
-				place.as_ref(),
-				&mut texture_deferred_loader,
-				&mut mesh_deferred_loader,
-			);
-
-			let mut mesh_loader=strafesnet_rbx_loader::loader::MeshLoader::new();
-			let meshpart_meshes=mesh_deferred_loader.into_meshes(&mut mesh_loader,LoadFailureMode::DefaultToNone).unwrap();
-
-			let map_step2=map_step1.add_meshpart_meshes_and_calculate_attributes(meshpart_meshes);
-
-			let mut texture_loader=strafesnet_rbx_loader::loader::TextureLoader::new();
-			let render_configs=texture_deferred_loader.into_render_configs(&mut texture_loader,LoadFailureMode::DefaultToNone).unwrap();
-
-			let map=map_step2.add_render_configs_and_textures(render_configs);
+			let map=place.to_snf(LoadFailureMode::DefaultToNone).map_err(ConvertError::RobloxLoad)?;
 
 			let mut dest=output_folder.clone();
 			dest.push(path.file_stem().unwrap());
diff --git a/src/source.rs b/src/source.rs
index ffc337a..9d60565 100644
--- a/src/source.rs
+++ b/src/source.rs
@@ -1,7 +1,7 @@
 use std::path::PathBuf;
 use clap::{Args,Subcommand};
 use anyhow::Result as AResult;
-use strafesnet_deferred_loader::deferred_loader::{LoadFailureMode,MeshDeferredLoader,RenderConfigDeferredLoader};
+use strafesnet_deferred_loader::deferred_loader::LoadFailureMode;
 
 #[derive(Subcommand)]
 pub enum Commands{
@@ -278,7 +278,8 @@ fn bsp_contents(path:PathBuf)->AResult<()>{
 enum ConvertError{
 	IO(std::io::Error),
 	SNFMap(strafesnet_snf::map::Error),
-	BspLoader(strafesnet_bsp_loader::ReadError),
+	BspRead(strafesnet_bsp_loader::ReadError),
+	BspLoad(strafesnet_bsp_loader::LoadError),
 }
 impl std::fmt::Display for ConvertError{
 	fn fmt(&self,f:&mut std::fmt::Formatter<'_>)->std::fmt::Result{
@@ -311,26 +312,9 @@ fn source_to_snf(pathlist:Vec<std::path::PathBuf>,output_folder:PathBuf)->AResul
 			let bsp=strafesnet_bsp_loader::read(
 				std::fs::File::open(path.as_path())
 				.map_err(ConvertError::IO)?
-			).map_err(ConvertError::BspLoader)?;
+			).map_err(ConvertError::BspRead)?;
 
-			let mut texture_deferred_loader=RenderConfigDeferredLoader::new();
-			let mut mesh_deferred_loader=MeshDeferredLoader::new();
-
-			let map_step1=strafesnet_bsp_loader::convert(
-				&bsp,
-				&mut texture_deferred_loader,
-				&mut mesh_deferred_loader,
-			);
-
-			let mut mesh_loader=strafesnet_bsp_loader::loader::MeshLoader::new(&bsp,&mut texture_deferred_loader);
-			let prop_meshes=mesh_deferred_loader.into_meshes(&mut mesh_loader,LoadFailureMode::DefaultToNone).unwrap();
-
-			let map_step2=map_step1.add_prop_meshes(prop_meshes);
-
-			let mut texture_loader=strafesnet_bsp_loader::loader::TextureLoader::new();
-			let render_configs=texture_deferred_loader.into_render_configs(&mut texture_loader,LoadFailureMode::DefaultToNone).unwrap();
-
-			let map=map_step2.add_render_configs_and_textures(render_configs);
+			let map=bsp.to_snf(LoadFailureMode::DefaultToNone).map_err(ConvertError::BspLoad)?;
 
 			let mut dest=output_folder.clone();
 			dest.push(path.file_stem().unwrap());