diff --git a/map-tool/src/source.rs b/map-tool/src/source.rs
index 5fcecea..4f1e3de 100644
--- a/map-tool/src/source.rs
+++ b/map-tool/src/source.rs
@@ -168,17 +168,38 @@ fn load_texture<'bsp,'vpk,'a>(finder:BspFinder<'bsp,'vpk>,texture_name:&str)->Re
 	let texture_file_name_lowercase=texture_name.to_lowercase();
 	texture_file_name.push(texture_file_name_lowercase.clone());
 	//remove stem and search for both vtf and vmt files
-	let stem=PathBuf::from(texture_file_name.file_stem().unwrap());
+	let stem=texture_file_name.file_stem().unwrap().to_owned();
 	texture_file_name.pop();
 	texture_file_name.push(stem);
 	if let Some(stuff)=finder.find(texture_file_name.to_str().unwrap())?{
-		return Ok(Some(stuff))
+		return Ok(Some(stuff));
 	}
-	//somehow search for both files
+
+	// search for both vmt,vtf
 	let mut texture_file_name_vmt=texture_file_name.clone();
-	texture_file_name.set_extension("vtf");
 	texture_file_name_vmt.set_extension("vmt");
-	recursive_vmt_loader(finder,get_vmt(finder,texture_file_name_vmt.to_str().unwrap())?)
+	let vmt_result=recursive_vmt_loader(finder,get_vmt(finder,texture_file_name_vmt.to_str().unwrap())?);
+	match vmt_result{
+		Ok(Some(stuff))=>return Ok(Some(stuff)),
+		Ok(None)
+		|Err(LoadVMTError::NotFound)=>(),
+		|Err(LoadVMTError::GetVMT(GetVMTError::NotFound))=>(),
+		Err(e)=>return Err(e),
+	}
+
+	// try looking for vtf
+	let mut texture_file_name_vtf=texture_file_name.clone();
+	texture_file_name_vtf.set_extension("vtf");
+	let vtf_result=recursive_vmt_loader(finder,get_vmt(finder,texture_file_name_vtf.to_str().unwrap())?);
+	match vtf_result{
+		Ok(Some(stuff))=>return Ok(Some(stuff)),
+		Ok(None)
+		|Err(LoadVMTError::NotFound)=>(),
+		|Err(LoadVMTError::GetVMT(GetVMTError::NotFound))=>(),
+		Err(e)=>return Err(e),
+	}
+
+	Ok(None)
 }
 #[derive(Debug,thiserror::Error)]
 enum ExtractTextureError{