diff --git a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/loot/LootTablesChests.kt b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/loot/LootTablesChests.kt
index 29b378bf5..194784963 100644
--- a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/loot/LootTablesChests.kt
+++ b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/loot/LootTablesChests.kt
@@ -44,6 +44,26 @@ fun addChestLootTables(loot: LootTables) {
 		}
 	}
 
+	loot.builder(LootContextParamSets.VAULT, modLootTable("laboratory_vault")){
+		lootPool {
+			item(MItems.MATTER_DUST) {
+				chanceCondition(0.1)
+				setWeight(4)
+				apply(MatterDustItem.Randomizer(UniformDecimal(Decimal(100), Decimal(2_500))))
+			}
+			item(Items.IRON_INGOT) {
+				setCount(minimal = 1, maximal = 3)
+				setWeight(3)
+			}
+
+		}
+	}
+
+	loot.builder(LootContextParamSets.VAULT, modLootTable("laboratory_ominous_vault")){
+
+
+	}
+
 	loot.builder(LootContextParamSets.CHEST, modLootTable("frigate_cargo")) {
 		lootPool {
 			item(Items.IRON_INGOT) {
diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/blackhole/BlackHoleBlockEntity.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/blackhole/BlackHoleBlockEntity.kt
index c94c15b68..0564d0670 100644
--- a/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/blackhole/BlackHoleBlockEntity.kt
+++ b/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/blackhole/BlackHoleBlockEntity.kt
@@ -5,6 +5,8 @@ import net.minecraft.client.Minecraft
 import net.minecraft.core.BlockPos
 import net.minecraft.core.HolderLookup
 import net.minecraft.core.SectionPos
+import net.minecraft.core.particles.DustParticleOptions
+import net.minecraft.core.particles.ParticleTypes
 import net.minecraft.nbt.CompoundTag
 import net.minecraft.server.level.ServerLevel
 import net.minecraft.server.level.ServerPlayer
@@ -211,6 +213,31 @@ class BlackHoleBlockEntity(p_155229_: BlockPos, p_155230_: BlockState) : Mattery
 			val distance = item.position().distanceTo(center)
 			setDeltaMovement(item, center, distance)
 		}
+
+		//no way null malware reference
+		val tempLevel = level
+		if (tempLevel?.otmRandom!!.nextFloat() < 0.8f) {
+
+			val size = gravitationStrength.pow(0.5)
+			val eventHorizonRadius = size / 2
+
+			val spawnRadius = 4 + eventHorizonRadius * (1.2 + tempLevel.otmRandom.nextDouble() * 0.6)
+
+			val theta = tempLevel.otmRandom.nextDouble() * Math.PI * 2
+			val phi = tempLevel.otmRandom.nextDouble() * Math.PI - Math.PI / 2
+
+			//мугек я не ощущаю центр
+			//хз нужно настроить
+			val x = blockPos.x + 0.5 + spawnRadius * Math.cos(theta) * Math.cos(phi)
+			val y = blockPos.y + 0.5 + spawnRadius * Math.sin(phi)
+			val z = blockPos.z + 0.5 + spawnRadius * Math.sin(theta) * Math.cos(phi)
+
+			val motionX = (blockPos.x + 0.5 - x) * 0.05
+			val motionY = (blockPos.y - 1.5 - y) * 0.05
+			val motionZ = (blockPos.z + 0.5 - z) * 0.05
+
+			tempLevel.addParticle(ParticleTypes.SMOKE, x, y, z, motionX, motionY, motionZ)
+		}
 	}
 
 	private val sphericalPositionsCache = ArrayList<BlockPos>()
diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MNames.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MNames.kt
index 03e4d3d46..2ee8e33e0 100644
--- a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MNames.kt
+++ b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MNames.kt
@@ -331,8 +331,8 @@ object MNames {
 	const val LOADER = "loader"
 
 	const val ANDROID_MELEE = "android_melee"
-	const val ANDROID_RANGED = "android_melee"
-	const val ANDROID_OVERSEER = "android_melee"
+	const val ANDROID_RANGED = "android_ranged"
+	const val ANDROID_OVERSEER = "android_overseer"
 
 	const val PHANTOM_ATTRACTOR = "phantom_attractor"
 	const val JUMP_BOOST = "jump_boost"
diff --git a/src/main/resources/data/overdrive_that_matters/structure/laboratory/center/lab_arena_0.nbt b/src/main/resources/data/overdrive_that_matters/structure/laboratory/center/lab_arena_0.nbt
deleted file mode 100644
index 91e1743a4..000000000
Binary files a/src/main/resources/data/overdrive_that_matters/structure/laboratory/center/lab_arena_0.nbt and /dev/null differ
diff --git a/src/main/resources/data/overdrive_that_matters/structure/laboratory/center/lab_arena_1.nbt b/src/main/resources/data/overdrive_that_matters/structure/laboratory/center/lab_arena_1.nbt
deleted file mode 100644
index dc8d66ccb..000000000
Binary files a/src/main/resources/data/overdrive_that_matters/structure/laboratory/center/lab_arena_1.nbt and /dev/null differ
diff --git a/src/main/resources/data/overdrive_that_matters/structure/laboratory/crossroads/vertical_a.nbt b/src/main/resources/data/overdrive_that_matters/structure/laboratory/crossroads/vertical_a.nbt
new file mode 100644
index 000000000..73b6e2d6d
Binary files /dev/null and b/src/main/resources/data/overdrive_that_matters/structure/laboratory/crossroads/vertical_a.nbt differ
diff --git a/src/main/resources/data/overdrive_that_matters/structure/laboratory/dead_end.nbt b/src/main/resources/data/overdrive_that_matters/structure/laboratory/dead_end.nbt
deleted file mode 100644
index 80a839063..000000000
Binary files a/src/main/resources/data/overdrive_that_matters/structure/laboratory/dead_end.nbt and /dev/null differ
diff --git a/src/main/resources/data/overdrive_that_matters/structure/laboratory/entrance/entrance_a.nbt b/src/main/resources/data/overdrive_that_matters/structure/laboratory/entrance/entrance_a.nbt
new file mode 100644
index 000000000..0dd47493f
Binary files /dev/null and b/src/main/resources/data/overdrive_that_matters/structure/laboratory/entrance/entrance_a.nbt differ
diff --git a/src/main/resources/data/overdrive_that_matters/structure/laboratory/fluff/chair.nbt b/src/main/resources/data/overdrive_that_matters/structure/laboratory/fluff/chair.nbt
new file mode 100644
index 000000000..54ba222ab
Binary files /dev/null and b/src/main/resources/data/overdrive_that_matters/structure/laboratory/fluff/chair.nbt differ
diff --git a/src/main/resources/data/overdrive_that_matters/structure/laboratory/fluff/office.nbt b/src/main/resources/data/overdrive_that_matters/structure/laboratory/fluff/office.nbt
new file mode 100644
index 000000000..558fb616a
Binary files /dev/null and b/src/main/resources/data/overdrive_that_matters/structure/laboratory/fluff/office.nbt differ
diff --git a/src/main/resources/data/overdrive_that_matters/structure/laboratory/fluff/refinery.nbt b/src/main/resources/data/overdrive_that_matters/structure/laboratory/fluff/refinery.nbt
new file mode 100644
index 000000000..d9c12ff42
Binary files /dev/null and b/src/main/resources/data/overdrive_that_matters/structure/laboratory/fluff/refinery.nbt differ
diff --git a/src/main/resources/data/overdrive_that_matters/structure/laboratory/fluff/server.nbt b/src/main/resources/data/overdrive_that_matters/structure/laboratory/fluff/server.nbt
new file mode 100644
index 000000000..8253c2bf4
Binary files /dev/null and b/src/main/resources/data/overdrive_that_matters/structure/laboratory/fluff/server.nbt differ
diff --git a/src/main/resources/data/overdrive_that_matters/structure/laboratory/fluff/storage.nbt b/src/main/resources/data/overdrive_that_matters/structure/laboratory/fluff/storage.nbt
new file mode 100644
index 000000000..c72adba79
Binary files /dev/null and b/src/main/resources/data/overdrive_that_matters/structure/laboratory/fluff/storage.nbt differ
diff --git a/src/main/resources/data/overdrive_that_matters/structure/laboratory/hall_fallback.nbt b/src/main/resources/data/overdrive_that_matters/structure/laboratory/hall_fallback.nbt
new file mode 100644
index 000000000..c50077b8a
Binary files /dev/null and b/src/main/resources/data/overdrive_that_matters/structure/laboratory/hall_fallback.nbt differ
diff --git a/src/main/resources/data/overdrive_that_matters/structure/laboratory/hall_fallback_core.nbt b/src/main/resources/data/overdrive_that_matters/structure/laboratory/hall_fallback_core.nbt
new file mode 100644
index 000000000..ae035eca5
Binary files /dev/null and b/src/main/resources/data/overdrive_that_matters/structure/laboratory/hall_fallback_core.nbt differ
diff --git a/src/main/resources/data/overdrive_that_matters/structure/laboratory/halls/bridges/bridge.nbt b/src/main/resources/data/overdrive_that_matters/structure/laboratory/halls/bridges/bridge.nbt
new file mode 100644
index 000000000..6e2e04cb4
Binary files /dev/null and b/src/main/resources/data/overdrive_that_matters/structure/laboratory/halls/bridges/bridge.nbt differ
diff --git a/src/main/resources/data/overdrive_that_matters/structure/laboratory/halls/bridges/bridge_broken.nbt b/src/main/resources/data/overdrive_that_matters/structure/laboratory/halls/bridges/bridge_broken.nbt
new file mode 100644
index 000000000..b1915e2e8
Binary files /dev/null and b/src/main/resources/data/overdrive_that_matters/structure/laboratory/halls/bridges/bridge_broken.nbt differ
diff --git a/src/main/resources/data/overdrive_that_matters/structure/laboratory/halls/bridges/bridge_repair.nbt b/src/main/resources/data/overdrive_that_matters/structure/laboratory/halls/bridges/bridge_repair.nbt
new file mode 100644
index 000000000..c3886967b
Binary files /dev/null and b/src/main/resources/data/overdrive_that_matters/structure/laboratory/halls/bridges/bridge_repair.nbt differ
diff --git a/src/main/resources/data/overdrive_that_matters/structure/laboratory/halls/bridges/bridge_wood.nbt b/src/main/resources/data/overdrive_that_matters/structure/laboratory/halls/bridges/bridge_wood.nbt
new file mode 100644
index 000000000..15bdcc02c
Binary files /dev/null and b/src/main/resources/data/overdrive_that_matters/structure/laboratory/halls/bridges/bridge_wood.nbt differ
diff --git a/src/main/resources/data/overdrive_that_matters/structure/laboratory/halls/center/center_a.nbt b/src/main/resources/data/overdrive_that_matters/structure/laboratory/halls/center/center_a.nbt
new file mode 100644
index 000000000..98326a1cd
Binary files /dev/null and b/src/main/resources/data/overdrive_that_matters/structure/laboratory/halls/center/center_a.nbt differ
diff --git a/src/main/resources/data/overdrive_that_matters/structure/laboratory/halls/decor/camp_a.nbt b/src/main/resources/data/overdrive_that_matters/structure/laboratory/halls/decor/camp_a.nbt
new file mode 100644
index 000000000..cd4d2b46a
Binary files /dev/null and b/src/main/resources/data/overdrive_that_matters/structure/laboratory/halls/decor/camp_a.nbt differ
diff --git a/src/main/resources/data/overdrive_that_matters/structure/laboratory/halls/decor/junk_array.nbt b/src/main/resources/data/overdrive_that_matters/structure/laboratory/halls/decor/junk_array.nbt
new file mode 100644
index 000000000..8e44a0a4f
Binary files /dev/null and b/src/main/resources/data/overdrive_that_matters/structure/laboratory/halls/decor/junk_array.nbt differ
diff --git a/src/main/resources/data/overdrive_that_matters/structure/laboratory/halls/decor/stockpile.nbt b/src/main/resources/data/overdrive_that_matters/structure/laboratory/halls/decor/stockpile.nbt
new file mode 100644
index 000000000..601f846b7
Binary files /dev/null and b/src/main/resources/data/overdrive_that_matters/structure/laboratory/halls/decor/stockpile.nbt differ
diff --git a/src/main/resources/data/overdrive_that_matters/structure/laboratory/halls/hall1/hall_overgrown.nbt b/src/main/resources/data/overdrive_that_matters/structure/laboratory/halls/hall1/hall_overgrown.nbt
new file mode 100644
index 000000000..4769910cb
Binary files /dev/null and b/src/main/resources/data/overdrive_that_matters/structure/laboratory/halls/hall1/hall_overgrown.nbt differ
diff --git a/src/main/resources/data/overdrive_that_matters/structure/laboratory/intersections/lava.nbt b/src/main/resources/data/overdrive_that_matters/structure/laboratory/intersections/lava.nbt
new file mode 100644
index 000000000..c9f367aef
Binary files /dev/null and b/src/main/resources/data/overdrive_that_matters/structure/laboratory/intersections/lava.nbt differ
diff --git a/src/main/resources/data/overdrive_that_matters/structure/laboratory/intersections/stairs_a.nbt b/src/main/resources/data/overdrive_that_matters/structure/laboratory/intersections/stairs_a.nbt
new file mode 100644
index 000000000..74677794e
Binary files /dev/null and b/src/main/resources/data/overdrive_that_matters/structure/laboratory/intersections/stairs_a.nbt differ
diff --git a/src/main/resources/data/overdrive_that_matters/structure/laboratory/intersections/stairs_b.nbt b/src/main/resources/data/overdrive_that_matters/structure/laboratory/intersections/stairs_b.nbt
new file mode 100644
index 000000000..aa9e218d7
Binary files /dev/null and b/src/main/resources/data/overdrive_that_matters/structure/laboratory/intersections/stairs_b.nbt differ
diff --git a/src/main/resources/data/overdrive_that_matters/structure/laboratory/intersections/turn_a.nbt b/src/main/resources/data/overdrive_that_matters/structure/laboratory/intersections/turn_a.nbt
new file mode 100644
index 000000000..6c4e167dd
Binary files /dev/null and b/src/main/resources/data/overdrive_that_matters/structure/laboratory/intersections/turn_a.nbt differ
diff --git a/src/main/resources/data/overdrive_that_matters/structure/laboratory/main/corridor_0.nbt b/src/main/resources/data/overdrive_that_matters/structure/laboratory/main/corridor_0.nbt
deleted file mode 100644
index 2aabd6086..000000000
Binary files a/src/main/resources/data/overdrive_that_matters/structure/laboratory/main/corridor_0.nbt and /dev/null differ
diff --git a/src/main/resources/data/overdrive_that_matters/structure/laboratory/main/corridor_1.nbt b/src/main/resources/data/overdrive_that_matters/structure/laboratory/main/corridor_1.nbt
deleted file mode 100644
index 5a592b1b6..000000000
Binary files a/src/main/resources/data/overdrive_that_matters/structure/laboratory/main/corridor_1.nbt and /dev/null differ
diff --git a/src/main/resources/data/overdrive_that_matters/structure/laboratory/main/corridor_room_0.nbt b/src/main/resources/data/overdrive_that_matters/structure/laboratory/main/corridor_room_0.nbt
deleted file mode 100644
index f6933f512..000000000
Binary files a/src/main/resources/data/overdrive_that_matters/structure/laboratory/main/corridor_room_0.nbt and /dev/null differ
diff --git a/src/main/resources/data/overdrive_that_matters/structure/laboratory/main/corridor_stairs_0.nbt b/src/main/resources/data/overdrive_that_matters/structure/laboratory/main/corridor_stairs_0.nbt
deleted file mode 100644
index f0a1e8f1b..000000000
Binary files a/src/main/resources/data/overdrive_that_matters/structure/laboratory/main/corridor_stairs_0.nbt and /dev/null differ
diff --git a/src/main/resources/data/overdrive_that_matters/structure/laboratory/main/corridor_turn_0.nbt b/src/main/resources/data/overdrive_that_matters/structure/laboratory/main/corridor_turn_0.nbt
deleted file mode 100644
index 7d5c1d8cd..000000000
Binary files a/src/main/resources/data/overdrive_that_matters/structure/laboratory/main/corridor_turn_0.nbt and /dev/null differ
diff --git a/src/main/resources/data/overdrive_that_matters/structure/laboratory/main/corrior_t_0.nbt b/src/main/resources/data/overdrive_that_matters/structure/laboratory/main/corrior_t_0.nbt
deleted file mode 100644
index a005157f9..000000000
Binary files a/src/main/resources/data/overdrive_that_matters/structure/laboratory/main/corrior_t_0.nbt and /dev/null differ
diff --git a/src/main/resources/data/overdrive_that_matters/structure/laboratory/main/generator_room_0.nbt b/src/main/resources/data/overdrive_that_matters/structure/laboratory/main/generator_room_0.nbt
deleted file mode 100644
index b8a71e7ab..000000000
Binary files a/src/main/resources/data/overdrive_that_matters/structure/laboratory/main/generator_room_0.nbt and /dev/null differ
diff --git a/src/main/resources/data/overdrive_that_matters/structure/laboratory/main/portal_room_0.nbt b/src/main/resources/data/overdrive_that_matters/structure/laboratory/main/portal_room_0.nbt
deleted file mode 100644
index 9f602edbd..000000000
Binary files a/src/main/resources/data/overdrive_that_matters/structure/laboratory/main/portal_room_0.nbt and /dev/null differ
diff --git a/src/main/resources/data/overdrive_that_matters/structure/laboratory/reward/reward.nbt b/src/main/resources/data/overdrive_that_matters/structure/laboratory/reward/reward.nbt
new file mode 100644
index 000000000..3ec08472d
Binary files /dev/null and b/src/main/resources/data/overdrive_that_matters/structure/laboratory/reward/reward.nbt differ
diff --git a/src/main/resources/data/overdrive_that_matters/structure/laboratory/reward/reward_ominous_wall.nbt b/src/main/resources/data/overdrive_that_matters/structure/laboratory/reward/reward_ominous_wall.nbt
new file mode 100644
index 000000000..3412c4405
Binary files /dev/null and b/src/main/resources/data/overdrive_that_matters/structure/laboratory/reward/reward_ominous_wall.nbt differ
diff --git a/src/main/resources/data/overdrive_that_matters/structure/laboratory/reward/reward_wall.nbt b/src/main/resources/data/overdrive_that_matters/structure/laboratory/reward/reward_wall.nbt
new file mode 100644
index 000000000..315a36262
Binary files /dev/null and b/src/main/resources/data/overdrive_that_matters/structure/laboratory/reward/reward_wall.nbt differ
diff --git a/src/main/resources/data/overdrive_that_matters/structure/laboratory/rooms/office_a.nbt b/src/main/resources/data/overdrive_that_matters/structure/laboratory/rooms/office_a.nbt
new file mode 100644
index 000000000..85ff54896
Binary files /dev/null and b/src/main/resources/data/overdrive_that_matters/structure/laboratory/rooms/office_a.nbt differ
diff --git a/src/main/resources/data/overdrive_that_matters/structure/laboratory/rooms/office_b.nbt b/src/main/resources/data/overdrive_that_matters/structure/laboratory/rooms/office_b.nbt
new file mode 100644
index 000000000..3ae979496
Binary files /dev/null and b/src/main/resources/data/overdrive_that_matters/structure/laboratory/rooms/office_b.nbt differ
diff --git a/src/main/resources/data/overdrive_that_matters/structure/laboratory/spawner/s_android_melee.nbt b/src/main/resources/data/overdrive_that_matters/structure/laboratory/spawner/s_android_melee.nbt
new file mode 100644
index 000000000..7cb5852f2
Binary files /dev/null and b/src/main/resources/data/overdrive_that_matters/structure/laboratory/spawner/s_android_melee.nbt differ
diff --git a/src/main/resources/data/overdrive_that_matters/structure/laboratory/spawner/s_android_ranged.nbt b/src/main/resources/data/overdrive_that_matters/structure/laboratory/spawner/s_android_ranged.nbt
new file mode 100644
index 000000000..13d7d691f
Binary files /dev/null and b/src/main/resources/data/overdrive_that_matters/structure/laboratory/spawner/s_android_ranged.nbt differ
diff --git a/src/main/resources/data/overdrive_that_matters/structure/laboratory/spawner/s_drone.nbt b/src/main/resources/data/overdrive_that_matters/structure/laboratory/spawner/s_drone.nbt
new file mode 100644
index 000000000..885c0d3e1
Binary files /dev/null and b/src/main/resources/data/overdrive_that_matters/structure/laboratory/spawner/s_drone.nbt differ
diff --git a/src/main/resources/data/overdrive_that_matters/structure/laboratory/spawner/s_loader.nbt b/src/main/resources/data/overdrive_that_matters/structure/laboratory/spawner/s_loader.nbt
new file mode 100644
index 000000000..4618f486a
Binary files /dev/null and b/src/main/resources/data/overdrive_that_matters/structure/laboratory/spawner/s_loader.nbt differ
diff --git a/src/main/resources/data/overdrive_that_matters/tags/worldgen/biome/laboratory.json b/src/main/resources/data/overdrive_that_matters/tags/worldgen/biome/laboratory.json
index ef6cc1d5b..e0c65ff3a 100644
--- a/src/main/resources/data/overdrive_that_matters/tags/worldgen/biome/laboratory.json
+++ b/src/main/resources/data/overdrive_that_matters/tags/worldgen/biome/laboratory.json
@@ -2,6 +2,7 @@
   "replace": false,
   "values": [
 	"#c:is_desert",
-	"minecraft:plains"
+	"minecraft:plains",
+	"minecraft:taiga"
   ]
 }
\ No newline at end of file
diff --git a/src/main/resources/data/overdrive_that_matters/worldgen/processor_list/laboratory_weathering.json b/src/main/resources/data/overdrive_that_matters/worldgen/processor_list/laboratory_weathering.json
new file mode 100644
index 000000000..da106f343
--- /dev/null
+++ b/src/main/resources/data/overdrive_that_matters/worldgen/processor_list/laboratory_weathering.json
@@ -0,0 +1,61 @@
+{
+  "processors": [
+    {
+      "processor_type": "minecraft:rule",
+      "rules": [
+        {
+          "input_predicate": {
+            "block": "overdrive_that_matters:tritanium_block_light_gray",
+            "predicate_type": "minecraft:random_block_match",
+            "probability": 0.2
+          },
+          "location_predicate": {
+            "predicate_type": "minecraft:always_true"
+          },
+          "output_state": {
+            "Name": "overdrive_that_matters:decorative_crate"
+          }
+        },
+        {
+          "input_predicate": {
+            "block": "overdrive_that_matters:metal_mesh",
+            "predicate_type": "minecraft:random_block_match",
+            "probability": 0.1
+          },
+          "location_predicate": {
+            "predicate_type": "minecraft:always_true"
+          },
+          "output_state": {
+            "Name": "minecraft:air"
+          }
+        },
+		{
+          "input_predicate": {
+            "block": "overdrive_that_matters:floor_tiles_stairs_white",
+            "predicate_type": "minecraft:random_block_match",
+            "probability": 0.1
+          },
+          "location_predicate": {
+            "predicate_type": "minecraft:always_true"
+          },
+          "output_state": {
+            "Name": "overdrive_that_matters:floor_tiles_slab_white"
+          }
+        },
+		{
+          "input_predicate": {
+            "block": "overdrive_that_matters:reinforced_redstone_lamp_inverted",
+            "predicate_type": "minecraft:random_block_match",
+            "probability": 0.3
+          },
+          "location_predicate": {
+            "predicate_type": "minecraft:always_true"
+          },
+          "output_state": {
+            "Name": "overdrive_that_matters:reinforced_redstone_lamp"
+          }
+        }
+      ]
+    }
+  ]
+}
\ No newline at end of file
diff --git a/src/main/resources/data/overdrive_that_matters/worldgen/structure/laboratory.json b/src/main/resources/data/overdrive_that_matters/worldgen/structure/laboratory.json
index 48fb4c86c..dee1b2d9c 100644
--- a/src/main/resources/data/overdrive_that_matters/worldgen/structure/laboratory.json
+++ b/src/main/resources/data/overdrive_that_matters/worldgen/structure/laboratory.json
@@ -1,18 +1,24 @@
 {
   "type": "minecraft:jigsaw",
   "biomes": "#overdrive_that_matters:laboratory",
-  "max_distance_from_center": 100,
+  "max_distance_from_center": 112,
   "liquid_settings": "ignore_waterlogging",
-  "size": 7,
+  "size": 10,
   "start_height": {
-    "absolute": -13
+    "type": "minecraft:uniform",
+    "max_inclusive": {
+      "absolute": 30
+    },
+    "min_inclusive": {
+      "absolute": -13
+    }
   },
   "spawn_overrides": {
     "monster": {
       "bounding_box": "piece",
       "spawns": [
         {
-          "type": "minecraft:pillager",
+          "type": "overdrive_that_matters:android_melee",
           "weight": 1,
           "minCount": 1,
           "maxCount": 2
@@ -21,7 +27,7 @@
     }
   },
   "start_jigsaw_name": "overdrive_that_matters:laboratory_anchor",
-  "start_pool": "overdrive_that_matters:laboratory/center",
+  "start_pool": "overdrive_that_matters:laboratory/entrance",
   "step": "underground_decoration",
   "terrain_adaption": "encapsulate",
   "use_expansion_hack": false
diff --git a/src/main/resources/data/overdrive_that_matters/worldgen/structure_set/laboratory.json b/src/main/resources/data/overdrive_that_matters/worldgen/structure_set/laboratory.json
index 17eec2b53..bc3884074 100644
--- a/src/main/resources/data/overdrive_that_matters/worldgen/structure_set/laboratory.json
+++ b/src/main/resources/data/overdrive_that_matters/worldgen/structure_set/laboratory.json
@@ -3,7 +3,7 @@
     "type": "minecraft:random_spread",
     "salt": 20803232,
     "separation": 8,
-    "spacing": 24
+    "spacing": 12
   },
   "structures": [
     {
diff --git a/src/main/resources/data/overdrive_that_matters/worldgen/template_pool/laboratory/center.json b/src/main/resources/data/overdrive_that_matters/worldgen/template_pool/laboratory/center.json
deleted file mode 100644
index a1755480b..000000000
--- a/src/main/resources/data/overdrive_that_matters/worldgen/template_pool/laboratory/center.json
+++ /dev/null
@@ -1,24 +0,0 @@
-{
-  "name": "overdrive_that_matters:center",
-  "elements": [
-	 {
-      "element": {
-		"element_type": "minecraft:single_pool_element",
-		"location": "overdrive_that_matters:laboratory/center/lab_arena_0",
-        "processors": "minecraft:empty",
-		"projection": "rigid"
-      },
-	  "weight": 1
-	 },
-	  {
-      "element": {
-		"element_type": "minecraft:single_pool_element",
-		"location": "overdrive_that_matters:laboratory/center/lab_arena_1",
-        "processors": "minecraft:empty",
-		"projection": "rigid"
-      },
-	  "weight": 1
-	 }
-  ],
-  "fallback": "minecraft:empty"
-}
\ No newline at end of file
diff --git a/src/main/resources/data/overdrive_that_matters/worldgen/template_pool/laboratory/crossroads.json b/src/main/resources/data/overdrive_that_matters/worldgen/template_pool/laboratory/crossroads.json
new file mode 100644
index 000000000..78b45a506
--- /dev/null
+++ b/src/main/resources/data/overdrive_that_matters/worldgen/template_pool/laboratory/crossroads.json
@@ -0,0 +1,15 @@
+{
+  "name": "overdrive_that_matters:crossroads",
+  "elements": [
+	 {
+      "element": {
+		"element_type": "minecraft:single_pool_element",
+		"location": "overdrive_that_matters:laboratory/crossroads/vertical_a",
+        "processors": "overdrive_that_matters:laboratory_weathering",
+		"projection": "rigid"
+      },
+	  "weight": 1
+	 }
+  ],
+  "fallback": "overdrive_that_matters:laboratory/fallback_pool"
+}
\ No newline at end of file
diff --git a/src/main/resources/data/overdrive_that_matters/worldgen/template_pool/laboratory/entrance.json b/src/main/resources/data/overdrive_that_matters/worldgen/template_pool/laboratory/entrance.json
new file mode 100644
index 000000000..82b72c1d2
--- /dev/null
+++ b/src/main/resources/data/overdrive_that_matters/worldgen/template_pool/laboratory/entrance.json
@@ -0,0 +1,15 @@
+{
+  "name": "overdrive_that_matters:entrance",
+  "elements": [
+	 {
+      "element": {
+		"element_type": "minecraft:single_pool_element",
+		"location": "overdrive_that_matters:laboratory/entrance/entrance_a",
+        "processors": "overdrive_that_matters:laboratory_weathering",
+		"projection": "rigid"
+      },
+	  "weight": 1
+	 }
+  ],
+  "fallback": "minecraft:empty"
+}
\ No newline at end of file
diff --git a/src/main/resources/data/overdrive_that_matters/worldgen/template_pool/laboratory/fallback_pool.json b/src/main/resources/data/overdrive_that_matters/worldgen/template_pool/laboratory/fallback_pool.json
index 0a49ae437..012a9cdff 100644
--- a/src/main/resources/data/overdrive_that_matters/worldgen/template_pool/laboratory/fallback_pool.json
+++ b/src/main/resources/data/overdrive_that_matters/worldgen/template_pool/laboratory/fallback_pool.json
@@ -4,7 +4,16 @@
 	{
       "element": {
 		"element_type": "minecraft:single_pool_element",
-		"location": "overdrive_that_matters:laboratory/dead_end",
+		"location": "overdrive_that_matters:laboratory/hall_fallback",
+        "processors": "minecraft:empty",
+		"projection": "rigid"
+      },
+	  "weight": 1
+	},
+	{
+      "element": {
+		"element_type": "minecraft:single_pool_element",
+		"location": "overdrive_that_matters:laboratory/hall_fallback_core",
         "processors": "minecraft:empty",
 		"projection": "rigid"
       },
diff --git a/src/main/resources/data/overdrive_that_matters/worldgen/template_pool/laboratory/fluff.json b/src/main/resources/data/overdrive_that_matters/worldgen/template_pool/laboratory/fluff.json
new file mode 100644
index 000000000..842108e80
--- /dev/null
+++ b/src/main/resources/data/overdrive_that_matters/worldgen/template_pool/laboratory/fluff.json
@@ -0,0 +1,51 @@
+{
+  "name": "overdrive_that_matters:fluff",
+  "elements": [
+	{
+      "element": {
+		"element_type": "minecraft:single_pool_element",
+		"location": "overdrive_that_matters:laboratory/fluff/chair",
+        "processors": "minecraft:empty",
+		"projection": "rigid"
+      },
+	  "weight": 1
+    },
+	{
+      "element": {
+		"element_type": "minecraft:single_pool_element",
+		"location": "overdrive_that_matters:laboratory/fluff/office",
+        "processors": "minecraft:empty",
+		"projection": "rigid"
+      },
+	  "weight": 1
+    },
+	{
+      "element": {
+		"element_type": "minecraft:single_pool_element",
+		"location": "overdrive_that_matters:laboratory/fluff/refinery",
+        "processors": "minecraft:empty",
+		"projection": "rigid"
+      },
+	  "weight": 1
+    },
+	{
+      "element": {
+		"element_type": "minecraft:single_pool_element",
+		"location": "overdrive_that_matters:laboratory/fluff/server",
+        "processors": "minecraft:empty",
+		"projection": "rigid"
+      },
+	  "weight": 1
+    },
+	{
+      "element": {
+		"element_type": "minecraft:single_pool_element",
+		"location": "overdrive_that_matters:laboratory/fluff/storage",
+        "processors": "minecraft:empty",
+		"projection": "rigid"
+      },
+	  "weight": 1
+    }
+  ],
+  "fallback": "minecraft:empty"
+}
\ No newline at end of file
diff --git a/src/main/resources/data/overdrive_that_matters/worldgen/template_pool/laboratory/halls/bridges.json b/src/main/resources/data/overdrive_that_matters/worldgen/template_pool/laboratory/halls/bridges.json
new file mode 100644
index 000000000..0812661ad
--- /dev/null
+++ b/src/main/resources/data/overdrive_that_matters/worldgen/template_pool/laboratory/halls/bridges.json
@@ -0,0 +1,48 @@
+{
+  "name": "overdrive_that_matters:bridges",
+  "elements": [
+	{
+      "element": {
+		"element_type": "minecraft:single_pool_element",
+		"location": "overdrive_that_matters:laboratory/halls/bridges/bridge",
+        "processors": "minecraft:empty",
+		"projection": "rigid"
+      },
+	  "weight": 3
+    },
+	{
+      "element": {
+		"element_type": "minecraft:single_pool_element",
+		"location": "overdrive_that_matters:laboratory/halls/bridges/bridge_broken",
+        "processors": "minecraft:empty",
+		"projection": "rigid"
+      },
+	  "weight": 3
+    },
+	{
+      "element": {
+		"element_type": "minecraft:single_pool_element",
+		"location": "overdrive_that_matters:laboratory/halls/bridges/bridge_repair",
+        "processors": "minecraft:empty",
+		"projection": "rigid"
+      },
+	  "weight": 3
+    },
+	{
+      "element": {
+		"element_type": "minecraft:single_pool_element",
+		"location": "overdrive_that_matters:laboratory/halls/bridges/bridge_wood",
+        "processors": "minecraft:empty",
+		"projection": "rigid"
+      },
+	  "weight": 2
+    },
+	{
+      "element": {
+		"element_type": "minecraft:empty_pool_element"
+      },
+	  "weight": 1
+    }
+  ],
+  "fallback": "minecraft:empty"
+}
\ No newline at end of file
diff --git a/src/main/resources/data/overdrive_that_matters/worldgen/template_pool/laboratory/halls/center.json b/src/main/resources/data/overdrive_that_matters/worldgen/template_pool/laboratory/halls/center.json
new file mode 100644
index 000000000..e8fd9f25e
--- /dev/null
+++ b/src/main/resources/data/overdrive_that_matters/worldgen/template_pool/laboratory/halls/center.json
@@ -0,0 +1,15 @@
+{
+  "name": "overdrive_that_matters:center",
+  "elements": [
+	{
+      "element": {
+		"element_type": "minecraft:single_pool_element",
+		"location": "overdrive_that_matters:laboratory/halls/center/center_a",
+        "processors": "minecraft:empty",
+		"projection": "rigid"
+      },
+	  "weight": 1
+    }
+  ],
+  "fallback": "minecraft:empty"
+}
\ No newline at end of file
diff --git a/src/main/resources/data/overdrive_that_matters/worldgen/template_pool/laboratory/halls/decor.json b/src/main/resources/data/overdrive_that_matters/worldgen/template_pool/laboratory/halls/decor.json
new file mode 100644
index 000000000..1c7c32736
--- /dev/null
+++ b/src/main/resources/data/overdrive_that_matters/worldgen/template_pool/laboratory/halls/decor.json
@@ -0,0 +1,33 @@
+{
+  "name": "overdrive_that_matters:bridges",
+  "elements": [
+	{
+      "element": {
+		"element_type": "minecraft:single_pool_element",
+		"location": "overdrive_that_matters:laboratory/halls/decor/camp_a",
+        "processors": "minecraft:empty",
+		"projection": "rigid"
+      },
+	  "weight": 1
+    },
+	{
+      "element": {
+		"element_type": "minecraft:single_pool_element",
+		"location": "overdrive_that_matters:laboratory/halls/decor/junk_array",
+        "processors": "minecraft:empty",
+		"projection": "rigid"
+      },
+	  "weight": 1
+    },
+	{
+      "element": {
+		"element_type": "minecraft:single_pool_element",
+		"location": "overdrive_that_matters:laboratory/halls/decor/stockpile",
+        "processors": "minecraft:empty",
+		"projection": "rigid"
+      },
+	  "weight": 1
+    }
+  ],
+  "fallback": "minecraft:empty"
+}
\ No newline at end of file
diff --git a/src/main/resources/data/overdrive_that_matters/worldgen/template_pool/laboratory/halls/hall1.json b/src/main/resources/data/overdrive_that_matters/worldgen/template_pool/laboratory/halls/hall1.json
new file mode 100644
index 000000000..b7cb559ac
--- /dev/null
+++ b/src/main/resources/data/overdrive_that_matters/worldgen/template_pool/laboratory/halls/hall1.json
@@ -0,0 +1,15 @@
+{
+  "name": "overdrive_that_matters:hall1",
+  "elements": [
+	{
+      "element": {
+		"element_type": "minecraft:single_pool_element",
+		"location": "overdrive_that_matters:laboratory/halls/hall1/hall_overgrown",
+        "processors": "overdrive_that_matters:laboratory_weathering",
+		"projection": "rigid"
+      },
+	  "weight": 1
+    }
+  ],
+  "fallback": "overdrive_that_matters:laboratory/fallback_pool"
+}
\ No newline at end of file
diff --git a/src/main/resources/data/overdrive_that_matters/worldgen/template_pool/laboratory/halls/hall2.json b/src/main/resources/data/overdrive_that_matters/worldgen/template_pool/laboratory/halls/hall2.json
new file mode 100644
index 000000000..1855da75c
--- /dev/null
+++ b/src/main/resources/data/overdrive_that_matters/worldgen/template_pool/laboratory/halls/hall2.json
@@ -0,0 +1,15 @@
+{
+  "name": "overdrive_that_matters:hall2",
+  "elements": [
+	{
+      "element": {
+		"element_type": "minecraft:single_pool_element",
+		"location": "overdrive_that_matters:laboratory/halls/hall1/hall_overgrown",
+        "processors": "overdrive_that_matters:laboratory_weathering",
+		"projection": "rigid"
+      },
+	  "weight": 4
+    }
+  ],
+  "fallback": "overdrive_that_matters:laboratory/fallback_pool"
+}
\ No newline at end of file
diff --git a/src/main/resources/data/overdrive_that_matters/worldgen/template_pool/laboratory/intersections.json b/src/main/resources/data/overdrive_that_matters/worldgen/template_pool/laboratory/intersections.json
new file mode 100644
index 000000000..27a79311d
--- /dev/null
+++ b/src/main/resources/data/overdrive_that_matters/worldgen/template_pool/laboratory/intersections.json
@@ -0,0 +1,42 @@
+{
+  "name": "overdrive_that_matters:intersections",
+  "elements": [
+	{
+      "element": {
+		"element_type": "minecraft:single_pool_element",
+		"location": "overdrive_that_matters:laboratory/intersections/stairs_a",
+        "processors": "overdrive_that_matters:laboratory_weathering",
+		"projection": "rigid"
+      },
+	  "weight": 3
+    },
+	{
+      "element": {
+		"element_type": "minecraft:single_pool_element",
+		"location": "overdrive_that_matters:laboratory/intersections/stairs_b",
+        "processors": "overdrive_that_matters:laboratory_weathering",
+		"projection": "rigid"
+      },
+	  "weight": 3
+    },
+	{
+      "element": {
+		"element_type": "minecraft:single_pool_element",
+		"location": "overdrive_that_matters:laboratory/intersections/turn_a",
+        "processors": "overdrive_that_matters:laboratory_weathering",
+		"projection": "rigid"
+      },
+	  "weight": 1
+    },
+	{
+      "element": {
+		"element_type": "minecraft:single_pool_element",
+		"location": "overdrive_that_matters:laboratory/intersections/lava",
+        "processors": "overdrive_that_matters:laboratory_weathering",
+		"projection": "rigid"
+      },
+	  "weight": 1
+    }
+  ],
+  "fallback": "overdrive_that_matters:laboratory/fallback_pool"
+}
\ No newline at end of file
diff --git a/src/main/resources/data/overdrive_that_matters/worldgen/template_pool/laboratory/main.json b/src/main/resources/data/overdrive_that_matters/worldgen/template_pool/laboratory/main.json
deleted file mode 100644
index 02e63ee92..000000000
--- a/src/main/resources/data/overdrive_that_matters/worldgen/template_pool/laboratory/main.json
+++ /dev/null
@@ -1,78 +0,0 @@
-{
-  "name": "overdrive_that_matters:main",
-  "elements": [
-	{
-      "element": {
-		"element_type": "minecraft:single_pool_element",
-		"location": "overdrive_that_matters:laboratory/main/corridor_0",
-        "processors": "minecraft:empty",
-		"projection": "rigid"
-      },
-	  "weight": 4
-    },
-	{
-      "element": {
-		"element_type": "minecraft:single_pool_element",
-		"location": "overdrive_that_matters:laboratory/main/corridor_1",
-        "processors": "minecraft:empty",
-		"projection": "rigid"
-      },
-	  "weight": 4
-    },
-	{
-      "element": {
-		"element_type": "minecraft:single_pool_element",
-		"location": "overdrive_that_matters:laboratory/main/corridor_turn_0",
-        "processors": "minecraft:empty",
-		"projection": "rigid"
-      },
-	  "weight": 4
-    },
-	{
-      "element": {
-		"element_type": "minecraft:single_pool_element",
-		"location": "overdrive_that_matters:laboratory/main/corrior_t_0",
-        "processors": "minecraft:empty",
-		"projection": "rigid"
-      },
-	  "weight": 3
-    },
-	{
-      "element": {
-		"element_type": "minecraft:single_pool_element",
-		"location": "overdrive_that_matters:laboratory/main/corridor_room_0",
-        "processors": "minecraft:empty",
-		"projection": "rigid"
-      },
-	  "weight": 3
-    },
-	{
-      "element": {
-		"element_type": "minecraft:single_pool_element",
-		"location": "overdrive_that_matters:laboratory/main/corridor_stairs_0",
-        "processors": "minecraft:empty",
-		"projection": "rigid"
-      },
-	  "weight": 2
-    },
-	{
-      "element": {
-		"element_type": "minecraft:single_pool_element",
-		"location": "overdrive_that_matters:laboratory/main/generator_room_0",
-        "processors": "minecraft:empty",
-		"projection": "rigid"
-      },
-	  "weight": 2
-    },
-	{
-      "element": {
-		"element_type": "minecraft:single_pool_element",
-		"location": "overdrive_that_matters:laboratory/main/portal_room_0",
-        "processors": "minecraft:empty",
-		"projection": "rigid"
-      },
-	  "weight": 1
-    }
-  ],
-  "fallback": "overdrive_that_matters:laboratory/fallback_pool"
-}
\ No newline at end of file
diff --git a/src/main/resources/data/overdrive_that_matters/worldgen/template_pool/laboratory/reward/reward.json b/src/main/resources/data/overdrive_that_matters/worldgen/template_pool/laboratory/reward/reward.json
new file mode 100644
index 000000000..158ce9f0d
--- /dev/null
+++ b/src/main/resources/data/overdrive_that_matters/worldgen/template_pool/laboratory/reward/reward.json
@@ -0,0 +1,15 @@
+{
+  "name": "overdrive_that_matters:reward",
+  "elements": [
+	 {
+      "element": {
+		"element_type": "minecraft:single_pool_element",
+		"location": "overdrive_that_matters:laboratory/reward/reward",
+        "processors": "minecraft:empty",
+		"projection": "rigid"
+      },
+	  "weight": 1
+	 }
+  ],
+  "fallback": "minecraft:empty"
+}
\ No newline at end of file
diff --git a/src/main/resources/data/overdrive_that_matters/worldgen/template_pool/laboratory/reward/reward_ominous_wall.json b/src/main/resources/data/overdrive_that_matters/worldgen/template_pool/laboratory/reward/reward_ominous_wall.json
new file mode 100644
index 000000000..35cae1a4b
--- /dev/null
+++ b/src/main/resources/data/overdrive_that_matters/worldgen/template_pool/laboratory/reward/reward_ominous_wall.json
@@ -0,0 +1,15 @@
+{
+  "name": "overdrive_that_matters:reward_ominous_wall",
+  "elements": [
+	 {
+      "element": {
+		"element_type": "minecraft:single_pool_element",
+		"location": "overdrive_that_matters:laboratory/reward/reward_ominous_wall",
+        "processors": "minecraft:empty",
+		"projection": "rigid"
+      },
+	  "weight": 1
+	 }
+  ],
+  "fallback": "minecraft:empty"
+}
\ No newline at end of file
diff --git a/src/main/resources/data/overdrive_that_matters/worldgen/template_pool/laboratory/reward/reward_wall.json b/src/main/resources/data/overdrive_that_matters/worldgen/template_pool/laboratory/reward/reward_wall.json
new file mode 100644
index 000000000..ba43c3f2f
--- /dev/null
+++ b/src/main/resources/data/overdrive_that_matters/worldgen/template_pool/laboratory/reward/reward_wall.json
@@ -0,0 +1,15 @@
+{
+  "name": "overdrive_that_matters:reward_wall",
+  "elements": [
+	 {
+      "element": {
+		"element_type": "minecraft:single_pool_element",
+		"location": "overdrive_that_matters:laboratory/reward/reward_wall",
+        "processors": "minecraft:empty",
+		"projection": "rigid"
+      },
+	  "weight": 1
+	 }
+  ],
+  "fallback": "minecraft:empty"
+}
\ No newline at end of file
diff --git a/src/main/resources/data/overdrive_that_matters/worldgen/template_pool/laboratory/rooms.json b/src/main/resources/data/overdrive_that_matters/worldgen/template_pool/laboratory/rooms.json
new file mode 100644
index 000000000..adeebe432
--- /dev/null
+++ b/src/main/resources/data/overdrive_that_matters/worldgen/template_pool/laboratory/rooms.json
@@ -0,0 +1,24 @@
+{
+  "name": "overdrive_that_matters:rooms",
+  "elements": [
+	{
+      "element": {
+		"element_type": "minecraft:single_pool_element",
+		"location": "overdrive_that_matters:laboratory/rooms/office_a",
+        "processors": "overdrive_that_matters:laboratory_weathering",
+		"projection": "rigid"
+      },
+	  "weight": 1
+    },
+	{
+      "element": {
+		"element_type": "minecraft:single_pool_element",
+		"location": "overdrive_that_matters:laboratory/rooms/office_b",
+        "processors": "overdrive_that_matters:laboratory_weathering",
+		"projection": "rigid"
+      },
+	  "weight": 1
+    }
+  ],
+  "fallback": "overdrive_that_matters:laboratory/fallback_pool"
+}
\ No newline at end of file
diff --git a/src/main/resources/data/overdrive_that_matters/worldgen/template_pool/laboratory/spawner/s_heavy.json b/src/main/resources/data/overdrive_that_matters/worldgen/template_pool/laboratory/spawner/s_heavy.json
new file mode 100644
index 000000000..f57705b3e
--- /dev/null
+++ b/src/main/resources/data/overdrive_that_matters/worldgen/template_pool/laboratory/spawner/s_heavy.json
@@ -0,0 +1,15 @@
+{
+  "name": "overdrive_that_matters:s_heavy",
+  "elements": [
+	 {
+      "element": {
+		"element_type": "minecraft:single_pool_element",
+		"location": "overdrive_that_matters:laboratory/spawner/s_loader",
+        "processors": "minecraft:empty",
+		"projection": "rigid"
+      },
+	  "weight": 1
+	 }
+  ],
+  "fallback": "minecraft:empty"
+}
\ No newline at end of file
diff --git a/src/main/resources/data/overdrive_that_matters/worldgen/template_pool/laboratory/spawner/s_melee.json b/src/main/resources/data/overdrive_that_matters/worldgen/template_pool/laboratory/spawner/s_melee.json
new file mode 100644
index 000000000..d58af319d
--- /dev/null
+++ b/src/main/resources/data/overdrive_that_matters/worldgen/template_pool/laboratory/spawner/s_melee.json
@@ -0,0 +1,15 @@
+{
+  "name": "overdrive_that_matters:s_heavy",
+  "elements": [
+	 {
+      "element": {
+		"element_type": "minecraft:single_pool_element",
+		"location": "overdrive_that_matters:laboratory/spawner/s_android_melee",
+        "processors": "minecraft:empty",
+		"projection": "rigid"
+      },
+	  "weight": 1
+	 }
+  ],
+  "fallback": "minecraft:empty"
+}
\ No newline at end of file