diff --git a/OpenRA.Mods.RA/CrateSpawner.cs b/OpenRA.Mods.RA/CrateSpawner.cs
index e0fdba3c72..5c0d19c3a0 100644
--- a/OpenRA.Mods.RA/CrateSpawner.cs
+++ b/OpenRA.Mods.RA/CrateSpawner.cs
@@ -13,11 +13,10 @@ using System.Linq;
using OpenRA.Mods.Common.Activities;
using OpenRA.Mods.RA.Activities;
using OpenRA.Mods.RA.Buildings;
-using OpenRA.Mods.RA.Traits;
using OpenRA.Primitives;
using OpenRA.Traits;
-namespace OpenRA.Mods.RA
+namespace OpenRA.Mods.RA.Traits
{
public class CrateSpawnerInfo : ITraitInfo
{
diff --git a/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj b/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj
index 4dc8ecc07e..a9e269a2bd 100644
--- a/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj
+++ b/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj
@@ -126,7 +126,6 @@
-
@@ -165,18 +164,20 @@
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -409,7 +410,6 @@
-
diff --git a/OpenRA.Mods.RA/Crate.cs b/OpenRA.Mods.RA/Traits/Crates/Crate.cs
similarity index 100%
rename from OpenRA.Mods.RA/Crate.cs
rename to OpenRA.Mods.RA/Traits/Crates/Crate.cs
diff --git a/OpenRA.Mods.RA/CrateAction.cs b/OpenRA.Mods.RA/Traits/Crates/CrateAction.cs
similarity index 98%
rename from OpenRA.Mods.RA/CrateAction.cs
rename to OpenRA.Mods.RA/Traits/Crates/CrateAction.cs
index 51082423a8..23490f0262 100644
--- a/OpenRA.Mods.RA/CrateAction.cs
+++ b/OpenRA.Mods.RA/Traits/Crates/CrateAction.cs
@@ -13,7 +13,7 @@ using OpenRA.Mods.Common.Effects;
using OpenRA.Mods.Common.Traits;
using OpenRA.Traits;
-namespace OpenRA.Mods.RA
+namespace OpenRA.Mods.RA.Traits
{
public class CrateActionInfo : ITraitInfo
{
diff --git a/OpenRA.Mods.RA/Crates/DuplicateUnitCrateAction.cs b/OpenRA.Mods.RA/Traits/Crates/DuplicateUnitCrateAction.cs
similarity index 98%
rename from OpenRA.Mods.RA/Crates/DuplicateUnitCrateAction.cs
rename to OpenRA.Mods.RA/Traits/Crates/DuplicateUnitCrateAction.cs
index a35f570044..0693599594 100644
--- a/OpenRA.Mods.RA/Crates/DuplicateUnitCrateAction.cs
+++ b/OpenRA.Mods.RA/Traits/Crates/DuplicateUnitCrateAction.cs
@@ -12,11 +12,10 @@ using System;
using System.Collections.Generic;
using System.Linq;
using OpenRA.Mods.Common.Traits;
-using OpenRA.Mods.RA.Traits;
using OpenRA.Primitives;
using OpenRA.Traits;
-namespace OpenRA.Mods.RA.Crates
+namespace OpenRA.Mods.RA.Traits
{
[Desc("Creates duplicates of the actor that collects the crate.")]
class DuplicateUnitCrateActionInfo : CrateActionInfo
diff --git a/OpenRA.Mods.RA/Crates/ExplodeCrateAction.cs b/OpenRA.Mods.RA/Traits/Crates/ExplodeCrateAction.cs
similarity index 97%
rename from OpenRA.Mods.RA/Crates/ExplodeCrateAction.cs
rename to OpenRA.Mods.RA/Traits/Crates/ExplodeCrateAction.cs
index 7468eca2ba..374b01a596 100644
--- a/OpenRA.Mods.RA/Crates/ExplodeCrateAction.cs
+++ b/OpenRA.Mods.RA/Traits/Crates/ExplodeCrateAction.cs
@@ -12,7 +12,7 @@ using System.Linq;
using OpenRA.GameRules;
using OpenRA.Traits;
-namespace OpenRA.Mods.RA
+namespace OpenRA.Mods.RA.Traits
{
[Desc("Fires a weapon at the location when collected.")]
class ExplodeCrateActionInfo : CrateActionInfo
diff --git a/OpenRA.Mods.RA/Crates/GiveCashCrateAction.cs b/OpenRA.Mods.RA/Traits/Crates/GiveCashCrateAction.cs
similarity index 97%
rename from OpenRA.Mods.RA/Crates/GiveCashCrateAction.cs
rename to OpenRA.Mods.RA/Traits/Crates/GiveCashCrateAction.cs
index b28a3f293f..88612612e6 100644
--- a/OpenRA.Mods.RA/Crates/GiveCashCrateAction.cs
+++ b/OpenRA.Mods.RA/Traits/Crates/GiveCashCrateAction.cs
@@ -11,7 +11,7 @@
using OpenRA.Mods.Common.Effects;
using OpenRA.Traits;
-namespace OpenRA.Mods.RA
+namespace OpenRA.Mods.RA.Traits
{
[Desc("Gives cash to the collector.")]
class GiveCashCrateActionInfo : CrateActionInfo
diff --git a/OpenRA.Mods.RA/Crates/GiveMcvCrateAction.cs b/OpenRA.Mods.RA/Traits/Crates/GiveMcvCrateAction.cs
similarity index 95%
rename from OpenRA.Mods.RA/Crates/GiveMcvCrateAction.cs
rename to OpenRA.Mods.RA/Traits/Crates/GiveMcvCrateAction.cs
index 5df58c50e4..ceb0edb2a4 100644
--- a/OpenRA.Mods.RA/Crates/GiveMcvCrateAction.cs
+++ b/OpenRA.Mods.RA/Traits/Crates/GiveMcvCrateAction.cs
@@ -8,10 +8,9 @@
*/
#endregion
-using OpenRA.Mods.RA.Traits;
using System.Linq;
-namespace OpenRA.Mods.RA.Crates
+namespace OpenRA.Mods.RA.Traits
{
[Desc("Spawns units when collected.", "Adjust selection shares when player has no base.")]
class GiveMcvCrateActionInfo : GiveUnitCrateActionInfo
diff --git a/OpenRA.Mods.RA/Crates/GiveUnitCrateAction.cs b/OpenRA.Mods.RA/Traits/Crates/GiveUnitCrateAction.cs
similarity index 98%
rename from OpenRA.Mods.RA/Crates/GiveUnitCrateAction.cs
rename to OpenRA.Mods.RA/Traits/Crates/GiveUnitCrateAction.cs
index 0fd09a9508..3cccd554b5 100644
--- a/OpenRA.Mods.RA/Crates/GiveUnitCrateAction.cs
+++ b/OpenRA.Mods.RA/Traits/Crates/GiveUnitCrateAction.cs
@@ -10,11 +10,10 @@
using System.Collections.Generic;
using System.Linq;
-using OpenRA.Mods.RA.Traits;
using OpenRA.Primitives;
using OpenRA.Traits;
-namespace OpenRA.Mods.RA.Crates
+namespace OpenRA.Mods.RA.Traits
{
[Desc("Spawns units when collected.")]
class GiveUnitCrateActionInfo : CrateActionInfo
diff --git a/OpenRA.Mods.RA/Crates/GrantUpgradeCrateAction.cs b/OpenRA.Mods.RA/Traits/Crates/GrantUpgradeCrateAction.cs
similarity index 98%
rename from OpenRA.Mods.RA/Crates/GrantUpgradeCrateAction.cs
rename to OpenRA.Mods.RA/Traits/Crates/GrantUpgradeCrateAction.cs
index b2163d3e99..b54d9f3b55 100644
--- a/OpenRA.Mods.RA/Crates/GrantUpgradeCrateAction.cs
+++ b/OpenRA.Mods.RA/Traits/Crates/GrantUpgradeCrateAction.cs
@@ -12,7 +12,7 @@ using System.Linq;
using OpenRA.Mods.Common.Traits;
using OpenRA.Traits;
-namespace OpenRA.Mods.RA.Crates
+namespace OpenRA.Mods.RA.Traits
{
[Desc("Grants an upgrade to the collector.")]
public class GrantUpgradeCrateActionInfo : CrateActionInfo
diff --git a/OpenRA.Mods.RA/Crates/HealUnitsCrateAction.cs b/OpenRA.Mods.RA/Traits/Crates/HealUnitsCrateAction.cs
similarity index 97%
rename from OpenRA.Mods.RA/Crates/HealUnitsCrateAction.cs
rename to OpenRA.Mods.RA/Traits/Crates/HealUnitsCrateAction.cs
index 930142329c..9b9f90e579 100644
--- a/OpenRA.Mods.RA/Crates/HealUnitsCrateAction.cs
+++ b/OpenRA.Mods.RA/Traits/Crates/HealUnitsCrateAction.cs
@@ -11,7 +11,7 @@
using System.Linq;
using OpenRA.Traits;
-namespace OpenRA.Mods.RA.Crates
+namespace OpenRA.Mods.RA.Traits
{
[Desc("Heals all actors that belong to the owner of the collector.")]
class HealUnitsCrateActionInfo : CrateActionInfo
diff --git a/OpenRA.Mods.RA/Crates/HideMapCrateAction.cs b/OpenRA.Mods.RA/Traits/Crates/HideMapCrateAction.cs
similarity index 97%
rename from OpenRA.Mods.RA/Crates/HideMapCrateAction.cs
rename to OpenRA.Mods.RA/Traits/Crates/HideMapCrateAction.cs
index 405e4ae514..f6b559de1f 100644
--- a/OpenRA.Mods.RA/Crates/HideMapCrateAction.cs
+++ b/OpenRA.Mods.RA/Traits/Crates/HideMapCrateAction.cs
@@ -8,7 +8,7 @@
*/
#endregion
-namespace OpenRA.Mods.RA
+namespace OpenRA.Mods.RA.Traits
{
[Desc("Hides the entire map in shroud.")]
class HideMapCrateActionInfo : CrateActionInfo
diff --git a/OpenRA.Mods.RA/Crates/LevelUpCrateAction.cs b/OpenRA.Mods.RA/Traits/Crates/LevelUpCrateAction.cs
similarity index 98%
rename from OpenRA.Mods.RA/Crates/LevelUpCrateAction.cs
rename to OpenRA.Mods.RA/Traits/Crates/LevelUpCrateAction.cs
index 5212e408d2..b9deed46eb 100644
--- a/OpenRA.Mods.RA/Crates/LevelUpCrateAction.cs
+++ b/OpenRA.Mods.RA/Traits/Crates/LevelUpCrateAction.cs
@@ -10,7 +10,7 @@
using System.Linq;
-namespace OpenRA.Mods.RA
+namespace OpenRA.Mods.RA.Traits
{
[Desc("Gives experience levels to the collector.")]
class LevelUpCrateActionInfo : CrateActionInfo
diff --git a/OpenRA.Mods.RA/Crates/RevealMapCrateAction.cs b/OpenRA.Mods.RA/Traits/Crates/RevealMapCrateAction.cs
similarity index 97%
rename from OpenRA.Mods.RA/Crates/RevealMapCrateAction.cs
rename to OpenRA.Mods.RA/Traits/Crates/RevealMapCrateAction.cs
index 4675215e82..c02fd6ad6c 100644
--- a/OpenRA.Mods.RA/Crates/RevealMapCrateAction.cs
+++ b/OpenRA.Mods.RA/Traits/Crates/RevealMapCrateAction.cs
@@ -10,7 +10,7 @@
using OpenRA.Traits;
-namespace OpenRA.Mods.RA
+namespace OpenRA.Mods.RA.Traits
{
[Desc("Reveals the entire map.")]
class RevealMapCrateActionInfo : CrateActionInfo
diff --git a/OpenRA.Mods.RA/Crates/SupportPowerCrateAction.cs b/OpenRA.Mods.RA/Traits/Crates/SupportPowerCrateAction.cs
similarity index 97%
rename from OpenRA.Mods.RA/Crates/SupportPowerCrateAction.cs
rename to OpenRA.Mods.RA/Traits/Crates/SupportPowerCrateAction.cs
index 3086a2e246..9ba54862af 100644
--- a/OpenRA.Mods.RA/Crates/SupportPowerCrateAction.cs
+++ b/OpenRA.Mods.RA/Traits/Crates/SupportPowerCrateAction.cs
@@ -11,7 +11,7 @@
using OpenRA.Primitives;
using OpenRA.Traits;
-namespace OpenRA.Mods.RA.Crates
+namespace OpenRA.Mods.RA.Traits
{
[Desc("Gives a supportpower to the collector.")]
class SupportPowerCrateActionInfo : CrateActionInfo