diff --git a/OpenRa.Game/OpenRa.Game.csproj b/OpenRa.Game/OpenRa.Game.csproj
index 41f680b6fc..e35ff3ac19 100644
--- a/OpenRa.Game/OpenRa.Game.csproj
+++ b/OpenRa.Game/OpenRa.Game.csproj
@@ -117,11 +117,11 @@
-
-
-
-
-
+
+
+
+
+
@@ -191,82 +191,82 @@
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
-
+
-
-
+
+
-
+
-
+
-
+
-
-
-
-
+
+
+
+
-
-
-
-
+
+
+
+
-
+
-
+
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
-
+
-
-
-
+
+
+
@@ -317,4 +317,4 @@
-->
-
+
\ No newline at end of file
diff --git a/OpenRa.Game/Traits/AutoHeal.cs b/OpenRa.Game/Traits/AI/AutoHeal.cs
similarity index 100%
rename from OpenRa.Game/Traits/AutoHeal.cs
rename to OpenRa.Game/Traits/AI/AutoHeal.cs
diff --git a/OpenRa.Game/Traits/AutoTarget.cs b/OpenRa.Game/Traits/AI/AutoTarget.cs
similarity index 100%
rename from OpenRa.Game/Traits/AutoTarget.cs
rename to OpenRa.Game/Traits/AI/AutoTarget.cs
diff --git a/OpenRa.Game/Traits/SelfHealing.cs b/OpenRa.Game/Traits/AI/SelfHealing.cs
similarity index 100%
rename from OpenRa.Game/Traits/SelfHealing.cs
rename to OpenRa.Game/Traits/AI/SelfHealing.cs
diff --git a/OpenRa.Game/Traits/TakeCover.cs b/OpenRa.Game/Traits/AI/TakeCover.cs
similarity index 100%
rename from OpenRa.Game/Traits/TakeCover.cs
rename to OpenRa.Game/Traits/AI/TakeCover.cs
diff --git a/OpenRa.Game/Traits/AttackBase.cs b/OpenRa.Game/Traits/Attack/AttackBase.cs
similarity index 100%
rename from OpenRa.Game/Traits/AttackBase.cs
rename to OpenRa.Game/Traits/Attack/AttackBase.cs
diff --git a/OpenRa.Game/Traits/AttackFrontal.cs b/OpenRa.Game/Traits/Attack/AttackFrontal.cs
similarity index 100%
rename from OpenRa.Game/Traits/AttackFrontal.cs
rename to OpenRa.Game/Traits/Attack/AttackFrontal.cs
diff --git a/OpenRa.Game/Traits/AttackHeli.cs b/OpenRa.Game/Traits/Attack/AttackHeli.cs
similarity index 100%
rename from OpenRa.Game/Traits/AttackHeli.cs
rename to OpenRa.Game/Traits/Attack/AttackHeli.cs
diff --git a/OpenRa.Game/Traits/AttackInfo.cs b/OpenRa.Game/Traits/Attack/AttackInfo.cs
similarity index 100%
rename from OpenRa.Game/Traits/AttackInfo.cs
rename to OpenRa.Game/Traits/Attack/AttackInfo.cs
diff --git a/OpenRa.Game/Traits/AttackOmni.cs b/OpenRa.Game/Traits/Attack/AttackOmni.cs
similarity index 100%
rename from OpenRa.Game/Traits/AttackOmni.cs
rename to OpenRa.Game/Traits/Attack/AttackOmni.cs
diff --git a/OpenRa.Game/Traits/AttackPlane.cs b/OpenRa.Game/Traits/Attack/AttackPlane.cs
similarity index 100%
rename from OpenRa.Game/Traits/AttackPlane.cs
rename to OpenRa.Game/Traits/Attack/AttackPlane.cs
diff --git a/OpenRa.Game/Traits/AttackTurreted.cs b/OpenRa.Game/Traits/Attack/AttackTurreted.cs
old mode 100755
new mode 100644
similarity index 100%
rename from OpenRa.Game/Traits/AttackTurreted.cs
rename to OpenRa.Game/Traits/Attack/AttackTurreted.cs
diff --git a/OpenRa.Game/Traits/BelowUnits.cs b/OpenRa.Game/Traits/Modifiers/BelowUnits.cs
similarity index 100%
rename from OpenRa.Game/Traits/BelowUnits.cs
rename to OpenRa.Game/Traits/Modifiers/BelowUnits.cs
diff --git a/OpenRa.Game/Traits/Cloak.cs b/OpenRa.Game/Traits/Modifiers/Cloak.cs
similarity index 100%
rename from OpenRa.Game/Traits/Cloak.cs
rename to OpenRa.Game/Traits/Modifiers/Cloak.cs
diff --git a/OpenRa.Game/Traits/InvisibleToOthers.cs b/OpenRa.Game/Traits/Modifiers/InvisibleToOthers.cs
similarity index 100%
rename from OpenRa.Game/Traits/InvisibleToOthers.cs
rename to OpenRa.Game/Traits/Modifiers/InvisibleToOthers.cs
diff --git a/OpenRa.Game/Traits/WithShadow.cs b/OpenRa.Game/Traits/Modifiers/WithShadow.cs
similarity index 100%
rename from OpenRa.Game/Traits/WithShadow.cs
rename to OpenRa.Game/Traits/Modifiers/WithShadow.cs
diff --git a/OpenRa.Game/Traits/PlaceBuilding.cs b/OpenRa.Game/Traits/Player/PlaceBuilding.cs
old mode 100755
new mode 100644
similarity index 100%
rename from OpenRa.Game/Traits/PlaceBuilding.cs
rename to OpenRa.Game/Traits/Player/PlaceBuilding.cs
diff --git a/OpenRa.Game/Traits/ProductionQueue.cs b/OpenRa.Game/Traits/Player/ProductionQueue.cs
old mode 100755
new mode 100644
similarity index 100%
rename from OpenRa.Game/Traits/ProductionQueue.cs
rename to OpenRa.Game/Traits/Player/ProductionQueue.cs
diff --git a/OpenRa.Game/Traits/RenderBuilding.cs b/OpenRa.Game/Traits/Render/RenderBuilding.cs
similarity index 100%
rename from OpenRa.Game/Traits/RenderBuilding.cs
rename to OpenRa.Game/Traits/Render/RenderBuilding.cs
diff --git a/OpenRa.Game/Traits/RenderBuildingCharge.cs b/OpenRa.Game/Traits/Render/RenderBuildingCharge.cs
similarity index 100%
rename from OpenRa.Game/Traits/RenderBuildingCharge.cs
rename to OpenRa.Game/Traits/Render/RenderBuildingCharge.cs
diff --git a/OpenRa.Game/Traits/RenderBuildingOre.cs b/OpenRa.Game/Traits/Render/RenderBuildingOre.cs
similarity index 100%
rename from OpenRa.Game/Traits/RenderBuildingOre.cs
rename to OpenRa.Game/Traits/Render/RenderBuildingOre.cs
diff --git a/OpenRa.Game/Traits/RenderBuildingTurreted.cs b/OpenRa.Game/Traits/Render/RenderBuildingTurreted.cs
similarity index 100%
rename from OpenRa.Game/Traits/RenderBuildingTurreted.cs
rename to OpenRa.Game/Traits/Render/RenderBuildingTurreted.cs
diff --git a/OpenRa.Game/Traits/RenderBuildingWarFactory.cs b/OpenRa.Game/Traits/Render/RenderBuildingWarFactory.cs
similarity index 100%
rename from OpenRa.Game/Traits/RenderBuildingWarFactory.cs
rename to OpenRa.Game/Traits/Render/RenderBuildingWarFactory.cs
diff --git a/OpenRa.Game/Traits/RenderInfantry.cs b/OpenRa.Game/Traits/Render/RenderInfantry.cs
similarity index 100%
rename from OpenRa.Game/Traits/RenderInfantry.cs
rename to OpenRa.Game/Traits/Render/RenderInfantry.cs
diff --git a/OpenRa.Game/Traits/RenderSimple.cs b/OpenRa.Game/Traits/Render/RenderSimple.cs
similarity index 100%
rename from OpenRa.Game/Traits/RenderSimple.cs
rename to OpenRa.Game/Traits/Render/RenderSimple.cs
diff --git a/OpenRa.Game/Traits/RenderUnit.cs b/OpenRa.Game/Traits/Render/RenderUnit.cs
similarity index 100%
rename from OpenRa.Game/Traits/RenderUnit.cs
rename to OpenRa.Game/Traits/Render/RenderUnit.cs
diff --git a/OpenRa.Game/Traits/RenderUnitMuzzleFlash.cs b/OpenRa.Game/Traits/Render/RenderUnitMuzzleFlash.cs
similarity index 100%
rename from OpenRa.Game/Traits/RenderUnitMuzzleFlash.cs
rename to OpenRa.Game/Traits/Render/RenderUnitMuzzleFlash.cs
diff --git a/OpenRa.Game/Traits/RenderUnitReload.cs b/OpenRa.Game/Traits/Render/RenderUnitReload.cs
similarity index 100%
rename from OpenRa.Game/Traits/RenderUnitReload.cs
rename to OpenRa.Game/Traits/Render/RenderUnitReload.cs
diff --git a/OpenRa.Game/Traits/RenderUnitRotor.cs b/OpenRa.Game/Traits/Render/RenderUnitRotor.cs
old mode 100755
new mode 100644
similarity index 100%
rename from OpenRa.Game/Traits/RenderUnitRotor.cs
rename to OpenRa.Game/Traits/Render/RenderUnitRotor.cs
diff --git a/OpenRa.Game/Traits/RenderUnitSpinner.cs b/OpenRa.Game/Traits/Render/RenderUnitSpinner.cs
old mode 100755
new mode 100644
similarity index 100%
rename from OpenRa.Game/Traits/RenderUnitSpinner.cs
rename to OpenRa.Game/Traits/Render/RenderUnitSpinner.cs
diff --git a/OpenRa.Game/Traits/RenderUnitTurreted.cs b/OpenRa.Game/Traits/Render/RenderUnitTurreted.cs
similarity index 100%
rename from OpenRa.Game/Traits/RenderUnitTurreted.cs
rename to OpenRa.Game/Traits/Render/RenderUnitTurreted.cs
diff --git a/OpenRa.Game/Traits/ChronoshiftPower.cs b/OpenRa.Game/Traits/SupportPowers/ChronoshiftPower.cs
similarity index 100%
rename from OpenRa.Game/Traits/ChronoshiftPower.cs
rename to OpenRa.Game/Traits/SupportPowers/ChronoshiftPower.cs
diff --git a/OpenRa.Game/Traits/CrateSpawnPower.cs b/OpenRa.Game/Traits/SupportPowers/CrateSpawnPower.cs
similarity index 100%
rename from OpenRa.Game/Traits/CrateSpawnPower.cs
rename to OpenRa.Game/Traits/SupportPowers/CrateSpawnPower.cs
diff --git a/OpenRa.Game/Traits/NukePower.cs b/OpenRa.Game/Traits/SupportPowers/NukePower.cs
similarity index 100%
rename from OpenRa.Game/Traits/NukePower.cs
rename to OpenRa.Game/Traits/SupportPowers/NukePower.cs
diff --git a/OpenRa.Game/Traits/SupportPower.cs b/OpenRa.Game/Traits/SupportPowers/SupportPower.cs
similarity index 100%
rename from OpenRa.Game/Traits/SupportPower.cs
rename to OpenRa.Game/Traits/SupportPowers/SupportPower.cs
diff --git a/OpenRa.Game/Traits/BridgeLoadHook.cs b/OpenRa.Game/Traits/World/BridgeLoadHook.cs
similarity index 100%
rename from OpenRa.Game/Traits/BridgeLoadHook.cs
rename to OpenRa.Game/Traits/World/BridgeLoadHook.cs
diff --git a/OpenRa.Game/Traits/BuildingInfluence.cs b/OpenRa.Game/Traits/World/BuildingInfluence.cs
old mode 100755
new mode 100644
similarity index 100%
rename from OpenRa.Game/Traits/BuildingInfluence.cs
rename to OpenRa.Game/Traits/World/BuildingInfluence.cs
diff --git a/OpenRa.Game/Traits/ChoosePaletteOnSelect.cs b/OpenRa.Game/Traits/World/ChoosePaletteOnSelect.cs
similarity index 100%
rename from OpenRa.Game/Traits/ChoosePaletteOnSelect.cs
rename to OpenRa.Game/Traits/World/ChoosePaletteOnSelect.cs
diff --git a/OpenRa.Game/Traits/ChronoshiftPaletteEffect.cs b/OpenRa.Game/Traits/World/ChronoshiftPaletteEffect.cs
similarity index 100%
rename from OpenRa.Game/Traits/ChronoshiftPaletteEffect.cs
rename to OpenRa.Game/Traits/World/ChronoshiftPaletteEffect.cs
diff --git a/OpenRa.Game/Traits/CrateSpawner.cs b/OpenRa.Game/Traits/World/CrateSpawner.cs
similarity index 100%
rename from OpenRa.Game/Traits/CrateSpawner.cs
rename to OpenRa.Game/Traits/World/CrateSpawner.cs
diff --git a/OpenRa.Game/Traits/LightPaletteRotator.cs b/OpenRa.Game/Traits/World/LightPaletteRotator.cs
similarity index 100%
rename from OpenRa.Game/Traits/LightPaletteRotator.cs
rename to OpenRa.Game/Traits/World/LightPaletteRotator.cs
diff --git a/OpenRa.Game/Traits/OreGrowth.cs b/OpenRa.Game/Traits/World/OreGrowth.cs
similarity index 100%
rename from OpenRa.Game/Traits/OreGrowth.cs
rename to OpenRa.Game/Traits/World/OreGrowth.cs
diff --git a/OpenRa.Game/Traits/PaletteFromFile.cs b/OpenRa.Game/Traits/World/PaletteFromFile.cs
similarity index 100%
rename from OpenRa.Game/Traits/PaletteFromFile.cs
rename to OpenRa.Game/Traits/World/PaletteFromFile.cs
diff --git a/OpenRa.Game/Traits/PaletteFromRGBA.cs b/OpenRa.Game/Traits/World/PaletteFromRGBA.cs
similarity index 100%
rename from OpenRa.Game/Traits/PaletteFromRGBA.cs
rename to OpenRa.Game/Traits/World/PaletteFromRGBA.cs
diff --git a/OpenRa.Game/Traits/PaletteFromRemap.cs b/OpenRa.Game/Traits/World/PaletteFromRemap.cs
similarity index 100%
rename from OpenRa.Game/Traits/PaletteFromRemap.cs
rename to OpenRa.Game/Traits/World/PaletteFromRemap.cs
diff --git a/OpenRa.Game/Traits/PlayerColorPalette.cs b/OpenRa.Game/Traits/World/PlayerColorPalette.cs
similarity index 100%
rename from OpenRa.Game/Traits/PlayerColorPalette.cs
rename to OpenRa.Game/Traits/World/PlayerColorPalette.cs
diff --git a/OpenRa.Game/Traits/ShroudPalette.cs b/OpenRa.Game/Traits/World/ShroudPalette.cs
similarity index 100%
rename from OpenRa.Game/Traits/ShroudPalette.cs
rename to OpenRa.Game/Traits/World/ShroudPalette.cs
diff --git a/OpenRa.Game/Traits/UnitInfluence.cs b/OpenRa.Game/Traits/World/UnitInfluence.cs
old mode 100755
new mode 100644
similarity index 100%
rename from OpenRa.Game/Traits/UnitInfluence.cs
rename to OpenRa.Game/Traits/World/UnitInfluence.cs
diff --git a/OpenRa.Game/Traits/WaterPaletteRotation.cs b/OpenRa.Game/Traits/World/WaterPaletteRotation.cs
similarity index 100%
rename from OpenRa.Game/Traits/WaterPaletteRotation.cs
rename to OpenRa.Game/Traits/World/WaterPaletteRotation.cs