diff --git a/Mage.Sets/src/mage/cards/c/CreatureBond.java b/Mage.Sets/src/mage/cards/c/CreatureBond.java
index 2c02218286..b88a1283b2 100644
--- a/Mage.Sets/src/mage/cards/c/CreatureBond.java
+++ b/Mage.Sets/src/mage/cards/c/CreatureBond.java
@@ -1,113 +1,74 @@
-/*
- *  Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
- *
- *  Redistribution and use in source and binary forms, with or without modification, are
- *  permitted provided that the following conditions are met:
- *
- *     1. Redistributions of source code must retain the above copyright notice, this list of
- *        conditions and the following disclaimer.
- *
- *     2. Redistributions in binary form must reproduce the above copyright notice, this list
- *        of conditions and the following disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- *  THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
- *  WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- *  FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
- *  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- *  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- *  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- *  ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- *  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- *  ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- *  The views and conclusions contained in the software and documentation are those of the
- *  authors and should not be interpreted as representing official policies, either expressed
- *  or implied, of BetaSteward_at_googlemail.com.
- */
-package mage.cards.c;
-
-import java.util.UUID;
-import mage.abilities.Ability;
-import mage.abilities.Mode;
-import mage.abilities.common.DiesAttachedTriggeredAbility;
-import mage.abilities.effects.OneShotEffect;
-import mage.abilities.effects.common.AttachEffect;
-import mage.abilities.keyword.EnchantAbility;
-import mage.cards.CardImpl;
-import mage.cards.CardSetInfo;
-import mage.constants.CardType;
-import mage.constants.Outcome;
-import mage.game.Game;
-import mage.game.permanent.Permanent;
-import mage.players.Player;
-import mage.target.TargetPermanent;
-import mage.target.common.TargetCreaturePermanent;
-
-/**
- *
- * @author Styxo
- */
-public class CreatureBond extends CardImpl {
-
-    public CreatureBond(UUID ownerId, CardSetInfo setInfo) {
-        super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{U}");
-
-        this.subtype.add("Aura");
-
-        // Enchant creature
-        TargetPermanent auraTarget = new TargetCreaturePermanent();
-        this.getSpellAbility().addTarget(auraTarget);
-        this.getSpellAbility().addEffect(new AttachEffect(Outcome.Benefit));
-        Ability ability = new EnchantAbility(auraTarget.getTargetName());
-        this.addAbility(ability);
-
-        // When enchanted creature dies, Creature Bond deals damage equal to that creature's toughness to the creature's controller.
-        this.addAbility(new DiesAttachedTriggeredAbility(new CreatureBondEffect(), "enchanted creature"));
-
-    }
-
-    public CreatureBond(final CreatureBond card) {
-        super(card);
-    }
-
-    @Override
-    public CreatureBond copy() {
-        return new CreatureBond(this);
-    }
-}
-
-class CreatureBondEffect extends OneShotEffect {
-
-    public CreatureBondEffect() {
-        super(Outcome.Damage);
-    }
-
-    public CreatureBondEffect(CreatureBondEffect copy) {
-        super(copy);
-    }
-
-    @Override
-    public CreatureBondEffect copy() {
-        return new CreatureBondEffect(this);
-    }
-
-    @Override
-    public boolean apply(Game game, Ability source) {
-        Permanent creature = (Permanent) getValue("attachedTo");
-        if (creature != null) {
-            Player player = game.getPlayer(creature.getOwnerId());
-            if (player != null) {
-                player.damage(creature.getToughness().getValue(), source.getId(), game, false, true);
-                return true;
-            }
-        }
-        return false;
-    }
-
-    @Override
-    public String getText(Mode mode) {
-        return "{this} deals damage equal to that creature's toughness to the creature's controller";
-    }
-
-}
+/*
+ *  Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without modification, are
+ *  permitted provided that the following conditions are met:
+ *
+ *     1. Redistributions of source code must retain the above copyright notice, this list of
+ *        conditions and the following disclaimer.
+ *
+ *     2. Redistributions in binary form must reproduce the above copyright notice, this list
+ *        of conditions and the following disclaimer in the documentation and/or other materials
+ *        provided with the distribution.
+ *
+ *  THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ *  WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ *  FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ *  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ *  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ *  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ *  ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ *  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ *  ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ *  The views and conclusions contained in the software and documentation are those of the
+ *  authors and should not be interpreted as representing official policies, either expressed
+ *  or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.cards.c;
+
+import java.util.UUID;
+import mage.abilities.Ability;
+import mage.abilities.common.DiesAttachedTriggeredAbility;
+import mage.abilities.dynamicvalue.common.AttachedPermanentToughnessValue;
+import mage.abilities.effects.common.AttachEffect;
+import mage.abilities.effects.common.DamageAttachedControllerEffect;
+import mage.abilities.keyword.EnchantAbility;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+import mage.constants.Outcome;
+import mage.target.TargetPermanent;
+import mage.target.common.TargetCreaturePermanent;
+
+/**
+ *
+ * @author MTGfan
+ */
+public class CreatureBond extends CardImpl {
+
+    public CreatureBond(UUID ownerId, CardSetInfo setInfo) {
+        super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{U}");
+        
+        this.subtype.add("Aura");
+
+        // Enchant creature
+        TargetPermanent auraTarget = new TargetCreaturePermanent();
+        this.getSpellAbility().addTarget(auraTarget);
+        this.getSpellAbility().addEffect(new AttachEffect(Outcome.BoostCreature));
+        Ability ability = new EnchantAbility(auraTarget.getTargetName());
+        this.addAbility(ability);
+
+        // When enchanted creature dies, Creature Bond deals damage equal to that creature's toughness to the creature's controller.
+	this.addAbility( new DiesAttachedTriggeredAbility(new DamageAttachedControllerEffect(new AttachedPermanentToughnessValue()), "enchanted creature"));
+    }
+
+    public CreatureBond(final CreatureBond card) {
+        super(card);
+    }
+
+    @Override
+    public CreatureBond copy() {
+        return new CreatureBond(this);
+    }
+}
diff --git a/Mage.Sets/src/mage/cards/g/GaeasLiege.java b/Mage.Sets/src/mage/cards/g/GaeasLiege.java
index 27ca80114f..6e17bd4ae8 100644
--- a/Mage.Sets/src/mage/cards/g/GaeasLiege.java
+++ b/Mage.Sets/src/mage/cards/g/GaeasLiege.java
@@ -32,7 +32,7 @@ import mage.MageInt;
 import mage.abilities.Ability;
 import mage.abilities.common.SimpleActivatedAbility;
 import mage.abilities.common.SimpleStaticAbility;
-import mage.abilities.condition.common.AttackingCondition;
+import mage.abilities.condition.common.SourceAttackingCondition;
 import mage.abilities.costs.common.TapSourceCost;
 import mage.abilities.decorator.ConditionalContinuousEffect;
 import mage.abilities.dynamicvalue.DynamicValue;
@@ -76,7 +76,7 @@ public class GaeasLiege extends CardImpl {
         this.addAbility(new SimpleStaticAbility(Zone.ALL, new ConditionalContinuousEffect(
                 new SetPowerToughnessSourceEffect(new DefendersForestCount(), Duration.EndOfCombat),
                 new SetPowerToughnessSourceEffect(new PermanentsOnBattlefieldCount(filterLands), Duration.EndOfGame),
-                AttackingCondition.getInstance(),
+                SourceAttackingCondition.getInstance(),
                 "As long as {this} isn't attacking, its power and toughness are each equal to the number of Forests you control. As long as {this} is attacking, its power and toughness are each equal to the number of Forests defending player controls.")));
         // {tap}: Target land becomes a Forest until Gaea's Liege leaves the battlefield.
         Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new BecomesBasicLandTargetEffect(Duration.WhileOnBattlefield, "Forest"), new TapSourceCost());
diff --git a/Mage.Sets/src/mage/cards/k/KorScythemaster.java b/Mage.Sets/src/mage/cards/k/KorScythemaster.java
index 4f24620ad8..4befcda12a 100644
--- a/Mage.Sets/src/mage/cards/k/KorScythemaster.java
+++ b/Mage.Sets/src/mage/cards/k/KorScythemaster.java
@@ -30,7 +30,7 @@ package mage.cards.k;
 import java.util.UUID;
 import mage.MageInt;
 import mage.abilities.common.SimpleStaticAbility;
-import mage.abilities.condition.common.SourceMatchesFilterCondition;
+import mage.abilities.condition.common.SourceAttackingCondition;
 import mage.abilities.decorator.ConditionalContinuousEffect;
 import mage.abilities.effects.common.continuous.GainAbilitySourceEffect;
 import mage.abilities.keyword.FirstStrikeAbility;
@@ -38,7 +38,6 @@ import mage.cards.CardImpl;
 import mage.cards.CardSetInfo;
 import mage.constants.CardType;
 import mage.constants.Zone;
-import mage.filter.common.FilterAttackingCreature;
 
 /**
  *
@@ -46,8 +45,6 @@ import mage.filter.common.FilterAttackingCreature;
  */
 public class KorScythemaster extends CardImpl {
 
-    private static final String rule = "{this} has first strike as long as it's attacking";
-
     public KorScythemaster(UUID ownerId, CardSetInfo setInfo) {
         super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
         this.subtype.add("Kor");
@@ -57,9 +54,7 @@ public class KorScythemaster extends CardImpl {
         this.toughness = new MageInt(1);
 
         // Kor Scythemaster has first strike as long as its attacking.
-        ConditionalContinuousEffect effect = new ConditionalContinuousEffect(new GainAbilitySourceEffect(FirstStrikeAbility.getInstance()),
-                new SourceMatchesFilterCondition(new FilterAttackingCreature()), rule);
-        this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, effect));
+        this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new ConditionalContinuousEffect(new GainAbilitySourceEffect(FirstStrikeAbility.getInstance()), SourceAttackingCondition.getInstance(), "{this} has first strike as long as it's attacking")));
     }
 
     public KorScythemaster(final KorScythemaster card) {
diff --git a/Mage.Sets/src/mage/cards/s/SoltariLancer.java b/Mage.Sets/src/mage/cards/s/SoltariLancer.java
index 62a139d0dd..62fb1c0366 100644
--- a/Mage.Sets/src/mage/cards/s/SoltariLancer.java
+++ b/Mage.Sets/src/mage/cards/s/SoltariLancer.java
@@ -30,7 +30,7 @@ package mage.cards.s;
 import java.util.UUID;
 import mage.MageInt;
 import mage.abilities.common.SimpleStaticAbility;
-import mage.abilities.condition.common.SourceMatchesFilterCondition;
+import mage.abilities.condition.common.SourceAttackingCondition;
 import mage.abilities.decorator.ConditionalContinuousEffect;
 import mage.abilities.effects.common.continuous.GainAbilitySourceEffect;
 import mage.abilities.keyword.FirstStrikeAbility;
@@ -39,7 +39,6 @@ import mage.cards.CardImpl;
 import mage.cards.CardSetInfo;
 import mage.constants.CardType;
 import mage.constants.Zone;
-import mage.filter.common.FilterAttackingCreature;
 
 /**
  *
@@ -47,8 +46,6 @@ import mage.filter.common.FilterAttackingCreature;
  */
 public class SoltariLancer extends CardImpl {
 
-    private static final String rule = "{this} has first strike as long as it's attacking";
-
     public SoltariLancer(UUID ownerId, CardSetInfo setInfo) {
         super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
         this.subtype.add("Soltari");
@@ -60,8 +57,7 @@ public class SoltariLancer extends CardImpl {
         this.addAbility(ShadowAbility.getInstance());
 
         // Soltari Lancer has first strike as long as it's attacking.
-        ConditionalContinuousEffect effect = new ConditionalContinuousEffect(new GainAbilitySourceEffect(FirstStrikeAbility.getInstance()), new SourceMatchesFilterCondition(new FilterAttackingCreature()), rule);
-        this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, effect));
+        this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new ConditionalContinuousEffect(new GainAbilitySourceEffect(FirstStrikeAbility.getInstance()), SourceAttackingCondition.getInstance(), "{this} has first strike as long as it's attacking")));
     }
 
     public SoltariLancer(final SoltariLancer card) {
diff --git a/Mage.Sets/src/mage/cards/s/SpiritOfTheNight.java b/Mage.Sets/src/mage/cards/s/SpiritOfTheNight.java
index e39967eb97..e186413d9d 100644
--- a/Mage.Sets/src/mage/cards/s/SpiritOfTheNight.java
+++ b/Mage.Sets/src/mage/cards/s/SpiritOfTheNight.java
@@ -31,16 +31,15 @@ import mage.constants.CardType;
 import mage.MageInt;
 import mage.ObjectColor;
 import mage.abilities.common.SimpleStaticAbility;
-import mage.abilities.condition.common.SourceMatchesFilterCondition;
 import mage.abilities.decorator.ConditionalContinuousEffect;
 import mage.abilities.effects.common.continuous.GainAbilitySourceEffect;
 import mage.abilities.keyword.*;
 import mage.cards.CardImpl;
 import mage.cards.CardSetInfo;
 import mage.constants.Zone;
-import mage.filter.common.FilterAttackingCreature;
 
 import java.util.UUID;
+import mage.abilities.condition.common.SourceAttackingCondition;
 
 /**
  *
@@ -48,8 +47,6 @@ import java.util.UUID;
  */
 public class SpiritOfTheNight extends CardImpl {
     
-    private static final String rule = "Spirit of the Night has first strike as long as it's attacking";
-
     public SpiritOfTheNight(UUID ownerId, CardSetInfo setInfo) {
         super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{6}{B}{B}{B}");
         this.supertype.add("Legendary");
@@ -72,8 +69,7 @@ public class SpiritOfTheNight extends CardImpl {
         this.addAbility(ProtectionAbility.from(ObjectColor.BLACK));
         
         // Spirit of the Night has first strike as long as it's attacking.
-        ConditionalContinuousEffect effect = new ConditionalContinuousEffect(new GainAbilitySourceEffect(FirstStrikeAbility.getInstance()), new SourceMatchesFilterCondition(new FilterAttackingCreature()), rule);
-        this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, effect));
+        this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new ConditionalContinuousEffect(new GainAbilitySourceEffect(FirstStrikeAbility.getInstance()), SourceAttackingCondition.getInstance(), "{this} has first strike as long as it's attacking")));
     }
 
     public SpiritOfTheNight(final SpiritOfTheNight card) {
diff --git a/Mage/src/main/java/mage/abilities/condition/common/AttackingCondition.java b/Mage/src/main/java/mage/abilities/condition/common/AttackingCondition.java
deleted file mode 100644
index a1b315a3b0..0000000000
--- a/Mage/src/main/java/mage/abilities/condition/common/AttackingCondition.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * To change this license header, choose License Headers in Project Properties.
- * To change this template file, choose Tools | Templates
- * and open the template in the editor.
- */
-package mage.abilities.condition.common;
-
-import mage.abilities.Ability;
-import mage.abilities.condition.Condition;
-import mage.game.Game;
-import mage.game.permanent.Permanent;
-
-/**
- *
- * @author anonymous
- */
-public class AttackingCondition implements Condition {
-
-    private static final AttachedCondition fInstance = new AttachedCondition();
-
-    public static AttachedCondition getInstance() {
-        return fInstance;
-    }
-
-    @Override
-    public boolean apply(Game game, Ability source) {
-        Permanent permanent = game.getPermanent(source.getSourceId());
-        return permanent != null && permanent.isAttacking();
-    }
-}
diff --git a/Mage/src/main/java/mage/abilities/dynamicvalue/common/AttachedPermanentToughnessValue.java b/Mage/src/main/java/mage/abilities/dynamicvalue/common/AttachedPermanentToughnessValue.java
new file mode 100644
index 0000000000..2dab3cdd79
--- /dev/null
+++ b/Mage/src/main/java/mage/abilities/dynamicvalue/common/AttachedPermanentToughnessValue.java
@@ -0,0 +1,41 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package mage.abilities.dynamicvalue.common;
+
+import mage.abilities.Ability;
+import mage.abilities.dynamicvalue.DynamicValue;
+import mage.abilities.effects.Effect;
+import mage.game.Game;
+import mage.game.permanent.Permanent;
+
+/**
+ *
+ * @author MTGfan
+ */
+public class AttachedPermanentToughnessValue implements DynamicValue {
+    
+    @Override
+    public int calculate(Game game, Ability source, Effect effect) {
+        Permanent enchantment = game.getPermanentOrLKIBattlefield(source.getSourceId());
+        Permanent enchanted = game.getPermanentOrLKIBattlefield(enchantment.getAttachedTo());
+        return enchanted.getToughness().getValue();
+    }
+    
+    @Override
+    public AttachedPermanentToughnessValue copy(){
+        return new AttachedPermanentToughnessValue();
+    }
+    
+    @Override
+    public String toString() {
+        return "equal to";
+    }
+    
+     @Override
+    public String getMessage() {
+        return "that creature's toughness";
+    }
+}
diff --git a/Mage/src/main/java/mage/abilities/effects/common/DamageAttachedControllerEffect.java b/Mage/src/main/java/mage/abilities/effects/common/DamageAttachedControllerEffect.java
index b248481aad..4db95ed083 100644
--- a/Mage/src/main/java/mage/abilities/effects/common/DamageAttachedControllerEffect.java
+++ b/Mage/src/main/java/mage/abilities/effects/common/DamageAttachedControllerEffect.java
@@ -30,6 +30,8 @@ package mage.abilities.effects.common;
 
 import mage.abilities.Ability;
 import mage.abilities.Mode;
+import mage.abilities.dynamicvalue.DynamicValue;
+import mage.abilities.dynamicvalue.common.StaticValue;
 import mage.abilities.effects.OneShotEffect;
 import mage.constants.Outcome;
 import mage.game.Game;
@@ -42,9 +44,14 @@ import mage.players.Player;
  */
 public class DamageAttachedControllerEffect extends OneShotEffect {
 
-    protected int amount;
+    protected DynamicValue amount;
 
     public DamageAttachedControllerEffect(int amount) {
+        super(Outcome.Damage);
+        this.amount = new StaticValue(amount);
+    }
+    
+    public DamageAttachedControllerEffect(DynamicValue amount) {
         super(Outcome.Damage);
         this.amount = amount;
     }
@@ -71,7 +78,7 @@ public class DamageAttachedControllerEffect extends OneShotEffect {
         }
         Player player = game.getPlayer(enchanted.getControllerId());
         if(player != null) {
-            player.damage(amount, source.getSourceId(), game, false, true);
+            player.damage(amount.calculate(game, source, this), source.getSourceId(), game, false, true);
             return true;
         }
         return false;
@@ -82,7 +89,9 @@ public class DamageAttachedControllerEffect extends OneShotEffect {
         if (staticText != null && !staticText.isEmpty()) {
             return staticText;
         }
-        return "{this} deals " + amount + " damage to that creature's controller";
+        if ("equal to".equals(amount.toString())) {
+            return "{this} deals damage " + amount + " that creatures toughness to that creature's controller";
+        }
+         return "{this} deals " + amount + " damage to that creature's controller";
     }
-
 }