diff --git a/Mage.Sets/src/mage/sets/darkascension/CurseOfExhaustion.java b/Mage.Sets/src/mage/sets/darkascension/CurseOfExhaustion.java
index 2a520a5b32..79a66e3f00 100644
--- a/Mage.Sets/src/mage/sets/darkascension/CurseOfExhaustion.java
+++ b/Mage.Sets/src/mage/sets/darkascension/CurseOfExhaustion.java
@@ -41,7 +41,7 @@ import mage.game.events.GameEvent;
 import mage.game.permanent.Permanent;
 import mage.players.Player;
 import mage.target.TargetPlayer;
-import mage.watchers.Watcher;
+import mage.watchers.common.CastSpellLastTurnWatcher;
 
 /**
  *
@@ -56,7 +56,6 @@ public class CurseOfExhaustion extends CardImpl {
         this.subtype.add("Curse");
 
         this.color.setWhite(true);
-        this.addWatcher(new CurseOfExhaustionWatcher());
 
         // Enchant player
         TargetPlayer auraTarget = new TargetPlayer();
@@ -78,39 +77,6 @@ public class CurseOfExhaustion extends CardImpl {
     }
 }
 
-class CurseOfExhaustionWatcher extends Watcher {
-
-    public CurseOfExhaustionWatcher() {
-        super("SpellCast", WatcherScope.PLAYER);
-    }
-
-    public CurseOfExhaustionWatcher(final CurseOfExhaustionWatcher watcher) {
-        super(watcher);
-    }
-
-    @Override
-    public CurseOfExhaustionWatcher copy() {
-        return new CurseOfExhaustionWatcher(this);
-    }
-
-    @Override
-    public void watch(GameEvent event, Game game) {
-        if (condition == true) {//no need to check - condition has already occured
-            return;
-        }
-        if (event.getType() == GameEvent.EventType.SPELL_CAST ) {
-            Permanent enchantment = game.getPermanent(this.sourceId);
-            if (enchantment != null && enchantment.getAttachedTo() != null) {
-                Player player = game.getPlayer(enchantment.getAttachedTo());
-                if (player != null && event.getPlayerId().equals(player.getId())) {
-                    condition = true;
-                }
-            }
-        }
-    }
-
-}
-
 class CurseOfExhaustionEffect extends ContinuousRuleModifiyingEffectImpl {
 
     public CurseOfExhaustionEffect() {
@@ -139,8 +105,8 @@ class CurseOfExhaustionEffect extends ContinuousRuleModifiyingEffectImpl {
             if (enchantment != null && enchantment.getAttachedTo() != null) {
                 Player player = game.getPlayer(enchantment.getAttachedTo());
                 if (player != null && event.getPlayerId().equals(player.getId())) {
-                    Watcher watcher = game.getState().getWatchers().get("SpellCast", source.getControllerId());
-                    if (watcher != null && watcher.conditionMet()) {
+                    CastSpellLastTurnWatcher watcher = (CastSpellLastTurnWatcher) game.getState().getWatchers().get("CastSpellLastTurnWatcher");
+                    if (watcher != null && watcher.getAmountOfSpellsPlayerCastOnCurrentTurn(event.getPlayerId()) > 0) {
                         return true;
                     }
                 }
diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/abilities/curses/CursesTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/abilities/curses/CursesTest.java
index 1dcd091d79..f466f34a33 100644
--- a/Mage.Tests/src/test/java/org/mage/test/cards/abilities/curses/CursesTest.java
+++ b/Mage.Tests/src/test/java/org/mage/test/cards/abilities/curses/CursesTest.java
@@ -84,6 +84,80 @@ public class CursesTest extends CardTestPlayerBase {
         assertLife(playerB, 14);
     }
 
+    /**
+     * Checks if Copy Enchantment works for palyer auras
+     */
+    @Test
+    public void testCurseOfExhaustion3() {        
+        addCard(Zone.BATTLEFIELD, playerA, "Plains", 4);
+        addCard(Zone.BATTLEFIELD, playerA, "Mountain", 2);
+        
+        addCard(Zone.BATTLEFIELD, playerB, "Island", 3);        
+        
+        addCard(Zone.HAND, playerA, "Curse of Exhaustion");
+        addCard(Zone.HAND, playerA, "Lightning Bolt", 2);        
+        
+        addCard(Zone.HAND, playerB, "Copy Enchantment", 1);
+        
+
+        castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Curse of Exhaustion", playerB);
+        
+        castSpell(4, PhaseStep.POSTCOMBAT_MAIN, playerA, "Lightning Bolt", playerB);
+        castSpell(4, PhaseStep.PRECOMBAT_MAIN, playerB, "Copy Enchantment");
+        setChoice(playerB, "Yes");
+        setChoice(playerB, "Curse of Exhaustion");
+        setChoice(playerB, "targetPlayer=PlayerA");
+        castSpell(4, PhaseStep.POSTCOMBAT_MAIN, playerA, "Lightning Bolt", playerB);
+        
+
+
+        setStopAt(4, PhaseStep.END_TURN);
+        execute();
+
+        assertHandCount(playerB, "Copy Enchantment", 0);
+        assertGraveyardCount(playerB, "Copy Enchantment", 0);
+        
+        assertPermanentCount(playerA, "Curse of Exhaustion", 1);        
+        assertPermanentCount(playerB, "Curse of Exhaustion", 1);
+        
+        assertLife(playerA, 20);
+        assertLife(playerB, 17);
+    }
+    
+    // returng curse enchantment from graveyard to battlefield
+    @Test
+    public void testCurseOfExhaustion4() {        
+        addCard(Zone.BATTLEFIELD, playerA, "Mountain", 2);
+        
+        addCard(Zone.BATTLEFIELD, playerB, "Plains", 3);
+        addCard(Zone.BATTLEFIELD, playerB, "Swamp", 2);
+        
+        addCard(Zone.HAND, playerA, "Lightning Bolt", 2);
+        
+        addCard(Zone.GRAVEYARD, playerB, "Curse of Exhaustion", 1);
+        addCard(Zone.HAND, playerB, "Obzedat's Aid", 1);
+
+        castSpell(2, PhaseStep.PRECOMBAT_MAIN, playerB, "Obzedat's Aid", "Curse of Exhaustion");
+        setChoice(playerB, "PlayerA");
+        
+        
+        castSpell(2, PhaseStep.POSTCOMBAT_MAIN, playerA, "Lightning Bolt", playerB);
+        castSpell(2, PhaseStep.POSTCOMBAT_MAIN, playerA, "Lightning Bolt", playerB);
+
+
+        setStopAt(2, PhaseStep.END_TURN);
+        execute();
+
+        assertHandCount(playerB, "Obzedat's Aid", 0);
+        assertGraveyardCount(playerB, "Obzedat's Aid", 1);
+        assertGraveyardCount(playerB, "Curse of Exhaustion", 0);
+        
+        assertPermanentCount(playerB, "Curse of Exhaustion", 1);
+        
+        assertLife(playerA, 20);
+        assertLife(playerB, 17);
+    }    
+    
     @Test
     public void testCurseOfThirst1() {
         addCard(Zone.BATTLEFIELD, playerA, "Swamp", 5);
diff --git a/Mage.Tests/src/test/java/org/mage/test/player/TestPlayer.java b/Mage.Tests/src/test/java/org/mage/test/player/TestPlayer.java
index 2b6d643fcb..24b7d5d0fb 100644
--- a/Mage.Tests/src/test/java/org/mage/test/player/TestPlayer.java
+++ b/Mage.Tests/src/test/java/org/mage/test/player/TestPlayer.java
@@ -63,6 +63,7 @@ import mage.constants.SpellAbilityType;
 import mage.filter.common.FilterCreatureForCombatBlock;
 import mage.filter.common.FilterPlaneswalkerPermanent;
 import mage.game.stack.StackObject;
+import mage.target.TargetPlayer;
 
 /**
  *
@@ -262,6 +263,20 @@ public class TestPlayer extends ComputerPlayer {
                     }
                 }
             }
+            if (target instanceof TargetPlayer) {
+                for (Player player :game.getPlayers().values()) {
+                    for (String choose2: choices) {
+                        if (player.getName().equals(choose2)) {
+                            if (((TargetPlayer)target).canTarget(playerId, player.getId(), null, game) && !target.getTargets().contains(player.getId())) {
+                                target.add(player.getId(), game);
+                                choices.remove(choose2);
+                                return true;                                
+                            }
+                        }
+                    }
+                }
+            }
+            
         }
         return super.choose(outcome, target, sourceId, game, options);
     }