diff --git a/src/main.rs b/src/main.rs
index a165c02..390f439 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -1514,8 +1514,8 @@ async fn compile(config:CompileConfig)->AResult<()>{
 
 					let style=config.style;
 					let exist_names=&exist_names;
-					//thread the needle! follow the patch that dir takes!
-					let u=futures::stream::unfold(dir,|mut dir1|async{
+					futures::stream::unfold(dir,|mut dir1|async{
+						//thread the needle! follow the path that dir takes!
 						let ret1={
 							//capture a scoped mutable reference so we can forward dir to the next call even on an error
 							let dir2=&mut dir1;
@@ -1523,20 +1523,7 @@ async fn compile(config:CompileConfig)->AResult<()>{
 								let ret2=if let Some(entry)=dir2.next_entry().await?{
 									//cull early even if supporting things with identical names is possible
 									if !exist_names.contains(entry.file_name().to_str().unwrap()){
-										let met=entry.metadata().await?;
-										//discern that bad boy
-										let compile_class=match met.is_dir(){
-											true=>locate_override_file(&entry,style).await?,
-											false=>discern_file(&entry,style).await?,
-										};
-										//prepare data structure
-										TooComplicated::Value((compile_class.blacklist,match compile_class.class{
-											CompileClass::Folder=>PreparedData::Builder(rbx_dom_weak::InstanceBuilder::new("Folder").with_name(compile_class.name.as_str())),
-											CompileClass::Script(source)=>PreparedData::Builder(script_builder("Script",compile_class.name.as_str(),source)),
-											CompileClass::LocalScript(source)=>PreparedData::Builder(script_builder("LocalScript",compile_class.name.as_str(),source)),
-											CompileClass::ModuleScript(source)=>PreparedData::Builder(script_builder("ModuleScript",compile_class.name.as_str(),source)),
-											CompileClass::Model(buf)=>PreparedData::Model(rbx_xml::from_reader_default(std::io::Cursor::new(buf))?),
-										}))
+										TooComplicated::Value(entry)
 									}else{
 										TooComplicated::Skip
 									}
@@ -1552,13 +1539,36 @@ async fn compile(config:CompileConfig)->AResult<()>{
 							Ok(TooComplicated::Value(v))=>Some((Ok(Some(v)),dir1)),
 							Err(e)=>Some((Err(e),dir1)),
 						}
-					});
+					})
+					//gotta spawn off the worker threads (Model is slow)
+					.then(|bog|async{
+						match bog{
+							Ok(Some(entry))=>tokio::spawn(async move{
+								let met=entry.metadata().await?;
+								//discern that bad boy
+								let compile_class=match met.is_dir(){
+									true=>locate_override_file(&entry,style).await?,
+									false=>discern_file(&entry,style).await?,
+								};
+								//prepare data structure
+								Ok(Some((compile_class.blacklist,match compile_class.class{
+									CompileClass::Folder=>PreparedData::Builder(rbx_dom_weak::InstanceBuilder::new("Folder").with_name(compile_class.name.as_str())),
+									CompileClass::Script(source)=>PreparedData::Builder(script_builder("Script",compile_class.name.as_str(),source)),
+									CompileClass::LocalScript(source)=>PreparedData::Builder(script_builder("LocalScript",compile_class.name.as_str(),source)),
+									CompileClass::ModuleScript(source)=>PreparedData::Builder(script_builder("ModuleScript",compile_class.name.as_str(),source)),
+									CompileClass::Model(buf)=>PreparedData::Model(rbx_xml::from_reader_default(std::io::Cursor::new(buf))?),
+								})))
+							}).await?,
+							Ok(None)=>Ok(None),
+							Err(e)=>Err(e),
+						}
+					})
 
 					//is this even what I want?
-					let u=u.map(|f|async{f}).buffer_unordered(32);
+					.map(|f|async{f}).buffer_unordered(32)
 
 					//begin processing immediately
-					u.fold((&mut stack,&mut dom),|(stack,dom),bog:Result<_,anyhow::Error>|async{
+					.fold((&mut stack,&mut dom),|(stack,dom),bog:Result<_,anyhow::Error>|async{
 						//push child objects onto dom serially as they arrive
 						match bog{
 							Ok(Some((blacklist,data)))=>{