diff --git a/OpenRA.Mods.Common/OpenRA.Mods.Common.csproj b/OpenRA.Mods.Common/OpenRA.Mods.Common.csproj
index 60c2d787f1..f823a8bd3a 100644
--- a/OpenRA.Mods.Common/OpenRA.Mods.Common.csproj
+++ b/OpenRA.Mods.Common/OpenRA.Mods.Common.csproj
@@ -247,6 +247,19 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -388,6 +401,7 @@
+
diff --git a/OpenRA.Mods.RA/Traits/Crates/Crate.cs b/OpenRA.Mods.Common/Traits/Crates/Crate.cs
similarity index 98%
rename from OpenRA.Mods.RA/Traits/Crates/Crate.cs
rename to OpenRA.Mods.Common/Traits/Crates/Crate.cs
index 99a4a1c563..3ab80b2234 100644
--- a/OpenRA.Mods.RA/Traits/Crates/Crate.cs
+++ b/OpenRA.Mods.Common/Traits/Crates/Crate.cs
@@ -10,11 +10,10 @@
using System.Collections.Generic;
using System.Linq;
-using OpenRA.Mods.Common.Traits;
using OpenRA.Primitives;
using OpenRA.Traits;
-namespace OpenRA.Mods.RA.Traits
+namespace OpenRA.Mods.Common.Traits
{
class CrateInfo : ITraitInfo, IOccupySpaceInfo, Requires
{
diff --git a/OpenRA.Mods.RA/Traits/Crates/CrateAction.cs b/OpenRA.Mods.Common/Traits/Crates/CrateAction.cs
similarity index 97%
rename from OpenRA.Mods.RA/Traits/Crates/CrateAction.cs
rename to OpenRA.Mods.Common/Traits/Crates/CrateAction.cs
index 9ee5f61903..63b77f1914 100644
--- a/OpenRA.Mods.RA/Traits/Crates/CrateAction.cs
+++ b/OpenRA.Mods.Common/Traits/Crates/CrateAction.cs
@@ -10,10 +10,9 @@
using System.Linq;
using OpenRA.Mods.Common.Effects;
-using OpenRA.Mods.Common.Traits;
using OpenRA.Traits;
-namespace OpenRA.Mods.RA.Traits
+namespace OpenRA.Mods.Common.Traits
{
public class CrateActionInfo : ITraitInfo
{
diff --git a/OpenRA.Mods.RA/Traits/Crates/DuplicateUnitCrateAction.cs b/OpenRA.Mods.Common/Traits/Crates/DuplicateUnitCrateAction.cs
similarity index 97%
rename from OpenRA.Mods.RA/Traits/Crates/DuplicateUnitCrateAction.cs
rename to OpenRA.Mods.Common/Traits/Crates/DuplicateUnitCrateAction.cs
index 769d73f42b..d5fd6f2595 100644
--- a/OpenRA.Mods.RA/Traits/Crates/DuplicateUnitCrateAction.cs
+++ b/OpenRA.Mods.Common/Traits/Crates/DuplicateUnitCrateAction.cs
@@ -9,13 +9,11 @@
#endregion
using System;
-using System.Collections.Generic;
using System.Linq;
-using OpenRA.Mods.Common.Traits;
using OpenRA.Primitives;
using OpenRA.Traits;
-namespace OpenRA.Mods.RA.Traits
+namespace OpenRA.Mods.Common.Traits
{
[Desc("Creates duplicates of the actor that collects the crate.")]
class DuplicateUnitCrateActionInfo : CrateActionInfo
diff --git a/OpenRA.Mods.RA/Traits/Crates/ExplodeCrateAction.cs b/OpenRA.Mods.Common/Traits/Crates/ExplodeCrateAction.cs
similarity index 95%
rename from OpenRA.Mods.RA/Traits/Crates/ExplodeCrateAction.cs
rename to OpenRA.Mods.Common/Traits/Crates/ExplodeCrateAction.cs
index 29273f3158..6123112c4f 100644
--- a/OpenRA.Mods.RA/Traits/Crates/ExplodeCrateAction.cs
+++ b/OpenRA.Mods.Common/Traits/Crates/ExplodeCrateAction.cs
@@ -9,10 +9,9 @@
#endregion
using System.Linq;
-using OpenRA.GameRules;
using OpenRA.Traits;
-namespace OpenRA.Mods.RA.Traits
+namespace OpenRA.Mods.Common.Traits
{
[Desc("Fires a weapon at the location when collected.")]
class ExplodeCrateActionInfo : CrateActionInfo
diff --git a/OpenRA.Mods.RA/Traits/Crates/GiveCashCrateAction.cs b/OpenRA.Mods.Common/Traits/Crates/GiveCashCrateAction.cs
similarity index 97%
rename from OpenRA.Mods.RA/Traits/Crates/GiveCashCrateAction.cs
rename to OpenRA.Mods.Common/Traits/Crates/GiveCashCrateAction.cs
index c05830875b..62753b6778 100644
--- a/OpenRA.Mods.RA/Traits/Crates/GiveCashCrateAction.cs
+++ b/OpenRA.Mods.Common/Traits/Crates/GiveCashCrateAction.cs
@@ -11,7 +11,7 @@
using OpenRA.Mods.Common.Effects;
using OpenRA.Traits;
-namespace OpenRA.Mods.RA.Traits
+namespace OpenRA.Mods.Common.Traits
{
[Desc("Gives cash to the collector.")]
class GiveCashCrateActionInfo : CrateActionInfo
diff --git a/OpenRA.Mods.RA/Traits/Crates/GiveMcvCrateAction.cs b/OpenRA.Mods.Common/Traits/Crates/GiveMcvCrateAction.cs
similarity index 95%
rename from OpenRA.Mods.RA/Traits/Crates/GiveMcvCrateAction.cs
rename to OpenRA.Mods.Common/Traits/Crates/GiveMcvCrateAction.cs
index c619315027..fc36ddacb2 100644
--- a/OpenRA.Mods.RA/Traits/Crates/GiveMcvCrateAction.cs
+++ b/OpenRA.Mods.Common/Traits/Crates/GiveMcvCrateAction.cs
@@ -9,9 +9,8 @@
#endregion
using System.Linq;
-using OpenRA.Mods.Common.Traits;
-namespace OpenRA.Mods.RA.Traits
+namespace OpenRA.Mods.Common.Traits
{
[Desc("Spawns units when collected.", "Adjust selection shares when player has no base.")]
class GiveMcvCrateActionInfo : GiveUnitCrateActionInfo
diff --git a/OpenRA.Mods.RA/Traits/Crates/GiveUnitCrateAction.cs b/OpenRA.Mods.Common/Traits/Crates/GiveUnitCrateAction.cs
similarity index 97%
rename from OpenRA.Mods.RA/Traits/Crates/GiveUnitCrateAction.cs
rename to OpenRA.Mods.Common/Traits/Crates/GiveUnitCrateAction.cs
index e621340c12..3c7a513f4a 100644
--- a/OpenRA.Mods.RA/Traits/Crates/GiveUnitCrateAction.cs
+++ b/OpenRA.Mods.Common/Traits/Crates/GiveUnitCrateAction.cs
@@ -10,11 +10,10 @@
using System.Collections.Generic;
using System.Linq;
-using OpenRA.Mods.Common.Traits;
using OpenRA.Primitives;
using OpenRA.Traits;
-namespace OpenRA.Mods.RA.Traits
+namespace OpenRA.Mods.Common.Traits
{
[Desc("Spawns units when collected.")]
class GiveUnitCrateActionInfo : CrateActionInfo
diff --git a/OpenRA.Mods.RA/Traits/Crates/GrantUpgradeCrateAction.cs b/OpenRA.Mods.Common/Traits/Crates/GrantUpgradeCrateAction.cs
similarity index 96%
rename from OpenRA.Mods.RA/Traits/Crates/GrantUpgradeCrateAction.cs
rename to OpenRA.Mods.Common/Traits/Crates/GrantUpgradeCrateAction.cs
index 3467ea34a1..3c2d20bf5f 100644
--- a/OpenRA.Mods.RA/Traits/Crates/GrantUpgradeCrateAction.cs
+++ b/OpenRA.Mods.Common/Traits/Crates/GrantUpgradeCrateAction.cs
@@ -9,10 +9,8 @@
#endregion
using System.Linq;
-using OpenRA.Mods.Common.Traits;
-using OpenRA.Traits;
-namespace OpenRA.Mods.RA.Traits
+namespace OpenRA.Mods.Common.Traits
{
[Desc("Grants an upgrade to the collector.")]
public class GrantUpgradeCrateActionInfo : CrateActionInfo
diff --git a/OpenRA.Mods.RA/Traits/Crates/HealUnitsCrateAction.cs b/OpenRA.Mods.Common/Traits/Crates/HealUnitsCrateAction.cs
similarity index 96%
rename from OpenRA.Mods.RA/Traits/Crates/HealUnitsCrateAction.cs
rename to OpenRA.Mods.Common/Traits/Crates/HealUnitsCrateAction.cs
index f19f29bd05..e5181c3d53 100644
--- a/OpenRA.Mods.RA/Traits/Crates/HealUnitsCrateAction.cs
+++ b/OpenRA.Mods.Common/Traits/Crates/HealUnitsCrateAction.cs
@@ -11,7 +11,7 @@
using System.Linq;
using OpenRA.Traits;
-namespace OpenRA.Mods.RA.Traits
+namespace OpenRA.Mods.Common.Traits
{
[Desc("Heals all actors that belong to the owner of the collector.")]
class HealUnitsCrateActionInfo : CrateActionInfo
diff --git a/OpenRA.Mods.RA/Traits/Crates/HideMapCrateAction.cs b/OpenRA.Mods.Common/Traits/Crates/HideMapCrateAction.cs
similarity index 96%
rename from OpenRA.Mods.RA/Traits/Crates/HideMapCrateAction.cs
rename to OpenRA.Mods.Common/Traits/Crates/HideMapCrateAction.cs
index de01f0e505..c102b3321a 100644
--- a/OpenRA.Mods.RA/Traits/Crates/HideMapCrateAction.cs
+++ b/OpenRA.Mods.Common/Traits/Crates/HideMapCrateAction.cs
@@ -8,7 +8,7 @@
*/
#endregion
-namespace OpenRA.Mods.RA.Traits
+namespace OpenRA.Mods.Common.Traits
{
[Desc("Hides the entire map in shroud.")]
class HideMapCrateActionInfo : CrateActionInfo
diff --git a/OpenRA.Mods.RA/Traits/Crates/LevelUpCrateAction.cs b/OpenRA.Mods.Common/Traits/Crates/LevelUpCrateAction.cs
similarity index 97%
rename from OpenRA.Mods.RA/Traits/Crates/LevelUpCrateAction.cs
rename to OpenRA.Mods.Common/Traits/Crates/LevelUpCrateAction.cs
index 2cb16d80e7..0b620fcd66 100644
--- a/OpenRA.Mods.RA/Traits/Crates/LevelUpCrateAction.cs
+++ b/OpenRA.Mods.Common/Traits/Crates/LevelUpCrateAction.cs
@@ -9,9 +9,8 @@
#endregion
using System.Linq;
-using OpenRA.Mods.Common.Traits;
-namespace OpenRA.Mods.RA.Traits
+namespace OpenRA.Mods.Common.Traits
{
[Desc("Gives experience levels to the collector.")]
class LevelUpCrateActionInfo : CrateActionInfo
diff --git a/OpenRA.Mods.RA/Traits/Crates/RevealMapCrateAction.cs b/OpenRA.Mods.Common/Traits/Crates/RevealMapCrateAction.cs
similarity index 97%
rename from OpenRA.Mods.RA/Traits/Crates/RevealMapCrateAction.cs
rename to OpenRA.Mods.Common/Traits/Crates/RevealMapCrateAction.cs
index 0f37236984..08bb3a8ec8 100644
--- a/OpenRA.Mods.RA/Traits/Crates/RevealMapCrateAction.cs
+++ b/OpenRA.Mods.Common/Traits/Crates/RevealMapCrateAction.cs
@@ -10,7 +10,7 @@
using OpenRA.Traits;
-namespace OpenRA.Mods.RA.Traits
+namespace OpenRA.Mods.Common.Traits
{
[Desc("Reveals the entire map.")]
class RevealMapCrateActionInfo : CrateActionInfo
diff --git a/OpenRA.Mods.RA/Traits/Crates/SupportPowerCrateAction.cs b/OpenRA.Mods.Common/Traits/Crates/SupportPowerCrateAction.cs
similarity index 97%
rename from OpenRA.Mods.RA/Traits/Crates/SupportPowerCrateAction.cs
rename to OpenRA.Mods.Common/Traits/Crates/SupportPowerCrateAction.cs
index 3b05185db9..7e5013a1d3 100644
--- a/OpenRA.Mods.RA/Traits/Crates/SupportPowerCrateAction.cs
+++ b/OpenRA.Mods.Common/Traits/Crates/SupportPowerCrateAction.cs
@@ -11,7 +11,7 @@
using OpenRA.Primitives;
using OpenRA.Traits;
-namespace OpenRA.Mods.RA.Traits
+namespace OpenRA.Mods.Common.Traits
{
[Desc("Gives a supportpower to the collector.")]
class SupportPowerCrateActionInfo : CrateActionInfo
diff --git a/OpenRA.Mods.RA/CrateSpawner.cs b/OpenRA.Mods.Common/Traits/World/CrateSpawner.cs
similarity index 98%
rename from OpenRA.Mods.RA/CrateSpawner.cs
rename to OpenRA.Mods.Common/Traits/World/CrateSpawner.cs
index 8fae8c6731..9879680229 100644
--- a/OpenRA.Mods.RA/CrateSpawner.cs
+++ b/OpenRA.Mods.Common/Traits/World/CrateSpawner.cs
@@ -11,12 +11,10 @@
using System;
using System.Linq;
using OpenRA.Mods.Common.Activities;
-using OpenRA.Mods.Common.Traits;
-using OpenRA.Mods.RA.Activities;
using OpenRA.Primitives;
using OpenRA.Traits;
-namespace OpenRA.Mods.RA.Traits
+namespace OpenRA.Mods.Common.Traits
{
public class CrateSpawnerInfo : ITraitInfo
{
diff --git a/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj b/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj
index 73e5d25c3c..4757d2323e 100644
--- a/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj
+++ b/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj
@@ -94,20 +94,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-