diff --git a/Mage.Sets/src/mage/cards/a/AleshaWhoSmilesAtDeath.java b/Mage.Sets/src/mage/cards/a/AleshaWhoSmilesAtDeath.java
index 5821347dc8..9f76c02a33 100644
--- a/Mage.Sets/src/mage/cards/a/AleshaWhoSmilesAtDeath.java
+++ b/Mage.Sets/src/mage/cards/a/AleshaWhoSmilesAtDeath.java
@@ -1,38 +1,39 @@
-
 package mage.cards.a;
 
-import java.util.UUID;
 import mage.MageInt;
 import mage.abilities.Ability;
 import mage.abilities.common.AttacksTriggeredAbility;
 import mage.abilities.costs.mana.ManaCostsImpl;
-import mage.abilities.effects.OneShotEffect;
 import mage.abilities.effects.common.DoIfCostPaid;
+import mage.abilities.effects.common.ReturnFromGraveyardToBattlefieldTargetEffect;
 import mage.abilities.keyword.FirstStrikeAbility;
-import mage.cards.Card;
 import mage.cards.CardImpl;
 import mage.cards.CardSetInfo;
-import mage.constants.*;
+import mage.constants.CardType;
+import mage.constants.ComparisonType;
+import mage.constants.SubType;
+import mage.constants.SuperType;
+import mage.filter.FilterCard;
 import mage.filter.common.FilterCreatureCard;
 import mage.filter.predicate.mageobject.PowerPredicate;
-import mage.game.Game;
-import mage.players.Player;
 import mage.target.common.TargetCardInYourGraveyard;
 
+import java.util.UUID;
+
 /**
- *
  * @author LevelX2
  */
 public final class AleshaWhoSmilesAtDeath extends CardImpl {
 
-    private static final FilterCreatureCard filter = new FilterCreatureCard("creature card with power 2 or less");
+    private static final FilterCard filter
+            = new FilterCreatureCard("creature card with power 2 or less from your graveyard");
 
     static {
         filter.add(new PowerPredicate(ComparisonType.FEWER_THAN, 3));
     }
 
     public AleshaWhoSmilesAtDeath(UUID ownerId, CardSetInfo setInfo) {
-        super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
+        super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}");
         addSuperType(SuperType.LEGENDARY);
         this.subtype.add(SubType.HUMAN);
         this.subtype.add(SubType.WARRIOR);
@@ -43,7 +44,10 @@ public final class AleshaWhoSmilesAtDeath extends CardImpl {
         this.addAbility(FirstStrikeAbility.getInstance());
 
         // Whenever Alesha, Who Smiles at Death attacks, you may pay {W/B}{W/B}. If you do, return target creature card with power 2 or less from your graveyard to the battlefield tapped and attacking.
-        Ability ability = new AttacksTriggeredAbility(new DoIfCostPaid(new AleshaWhoSmilesAtDeathEffect(), new ManaCostsImpl("{W/B}{W/B}")), false);
+        Ability ability = new AttacksTriggeredAbility(new DoIfCostPaid(
+                new ReturnFromGraveyardToBattlefieldTargetEffect(true, true),
+                new ManaCostsImpl<>("{W/B}{W/B}")
+        ), false);
         ability.addTarget(new TargetCardInYourGraveyard(filter));
         this.addAbility(ability);
     }
@@ -57,38 +61,3 @@ public final class AleshaWhoSmilesAtDeath extends CardImpl {
         return new AleshaWhoSmilesAtDeath(this);
     }
 }
-
-class AleshaWhoSmilesAtDeathEffect extends OneShotEffect {
-
-    public AleshaWhoSmilesAtDeathEffect() {
-        super(Outcome.PutCreatureInPlay);
-        this.staticText = "return target creature card with power 2 or less from your graveyard to the battlefield tapped and attacking";
-    }
-
-    public AleshaWhoSmilesAtDeathEffect(final AleshaWhoSmilesAtDeathEffect effect) {
-        super(effect);
-    }
-
-    @Override
-    public boolean apply(Game game, Ability source) {
-        Player controller = game.getPlayer(source.getControllerId());
-
-        if (controller != null) {
-            Card card = game.getCard(getTargetPointer().getFirst(game, source));
-            if (card != null) {
-                if (controller.moveCards(card, Zone.BATTLEFIELD, source, game, true, false, false, null)) {
-                    game.getCombat().addAttackingCreature(card.getId(), game);
-                }
-            }
-            return true;
-
-        }
-        return false;
-    }
-
-    @Override
-    public AleshaWhoSmilesAtDeathEffect copy() {
-        return new AleshaWhoSmilesAtDeathEffect(this);
-    }
-
-}
diff --git a/Mage.Sets/src/mage/cards/b/BereavedSurvivor.java b/Mage.Sets/src/mage/cards/b/BereavedSurvivor.java
new file mode 100644
index 0000000000..453f517c4f
--- /dev/null
+++ b/Mage.Sets/src/mage/cards/b/BereavedSurvivor.java
@@ -0,0 +1,46 @@
+package mage.cards.b;
+
+import mage.MageInt;
+import mage.abilities.common.DiesCreatureTriggeredAbility;
+import mage.abilities.effects.common.TransformSourceEffect;
+import mage.abilities.keyword.TransformAbility;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+import mage.constants.SubType;
+import mage.filter.StaticFilters;
+
+import java.util.UUID;
+
+/**
+ * @author TheElk801
+ */
+public final class BereavedSurvivor extends CardImpl {
+
+    public BereavedSurvivor(UUID ownerId, CardSetInfo setInfo) {
+        super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}");
+
+        this.subtype.add(SubType.HUMAN);
+        this.subtype.add(SubType.PEASANT);
+        this.power = new MageInt(2);
+        this.toughness = new MageInt(1);
+        this.transformable = true;
+        this.secondSideCardClazz = mage.cards.d.DauntlessAvenger.class;
+
+        // When another creature you control dies, transform Bereaved Survivor.
+        this.addAbility(new TransformAbility());
+        this.addAbility(new DiesCreatureTriggeredAbility(
+                new TransformSourceEffect(true), false,
+                StaticFilters.FILTER_CONTROLLED_ANOTHER_CREATURE
+        ));
+    }
+
+    private BereavedSurvivor(final BereavedSurvivor card) {
+        super(card);
+    }
+
+    @Override
+    public BereavedSurvivor copy() {
+        return new BereavedSurvivor(this);
+    }
+}
diff --git a/Mage.Sets/src/mage/cards/d/DauntlessAvenger.java b/Mage.Sets/src/mage/cards/d/DauntlessAvenger.java
new file mode 100644
index 0000000000..d7004ce349
--- /dev/null
+++ b/Mage.Sets/src/mage/cards/d/DauntlessAvenger.java
@@ -0,0 +1,56 @@
+package mage.cards.d;
+
+import mage.MageInt;
+import mage.abilities.Ability;
+import mage.abilities.common.AttacksTriggeredAbility;
+import mage.abilities.effects.common.ReturnFromGraveyardToBattlefieldTargetEffect;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+import mage.constants.ComparisonType;
+import mage.constants.SubType;
+import mage.filter.FilterCard;
+import mage.filter.common.FilterCreatureCard;
+import mage.filter.predicate.mageobject.ManaValuePredicate;
+import mage.target.common.TargetCardInYourGraveyard;
+
+import java.util.UUID;
+
+/**
+ * @author TheElk801
+ */
+public final class DauntlessAvenger extends CardImpl {
+
+    private static final FilterCard filter
+            = new FilterCreatureCard("creature card with mana value 2 or less from your graveyard");
+
+    static {
+        filter.add(new ManaValuePredicate(ComparisonType.FEWER_THAN, 3));
+    }
+
+    public DauntlessAvenger(UUID ownerId, CardSetInfo setInfo) {
+        super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "");
+
+        this.subtype.add(SubType.HUMAN);
+        this.subtype.add(SubType.SOLDIER);
+        this.power = new MageInt(3);
+        this.toughness = new MageInt(2);
+        this.color.setWhite(true);
+        this.transformable = true;
+        this.nightCard = true;
+
+        // Whenever Dauntless Avenger attacks, return target creature card with mana value 2 or less from your graveyard to the battlefield tapped and attacking.
+        Ability ability = new AttacksTriggeredAbility(new ReturnFromGraveyardToBattlefieldTargetEffect(true, true));
+        ability.addTarget(new TargetCardInYourGraveyard(filter));
+        this.addAbility(ability);
+    }
+
+    private DauntlessAvenger(final DauntlessAvenger card) {
+        super(card);
+    }
+
+    @Override
+    public DauntlessAvenger copy() {
+        return new DauntlessAvenger(this);
+    }
+}
diff --git a/Mage.Sets/src/mage/cards/y/YoreTillerNephilim.java b/Mage.Sets/src/mage/cards/y/YoreTillerNephilim.java
index 163d649e4f..cc0defe905 100644
--- a/Mage.Sets/src/mage/cards/y/YoreTillerNephilim.java
+++ b/Mage.Sets/src/mage/cards/y/YoreTillerNephilim.java
@@ -1,25 +1,19 @@
 package mage.cards.y;
 
-import java.util.UUID;
 import mage.MageInt;
 import mage.abilities.Ability;
 import mage.abilities.common.AttacksTriggeredAbility;
-import mage.abilities.effects.OneShotEffect;
-import mage.cards.Card;
+import mage.abilities.effects.common.ReturnFromGraveyardToBattlefieldTargetEffect;
 import mage.cards.CardImpl;
 import mage.cards.CardSetInfo;
 import mage.constants.CardType;
-import mage.constants.Outcome;
 import mage.constants.SubType;
-import mage.constants.Zone;
 import mage.filter.StaticFilters;
-import mage.game.Game;
-import mage.game.permanent.Permanent;
-import mage.players.Player;
 import mage.target.common.TargetCardInYourGraveyard;
 
+import java.util.UUID;
+
 /**
- *
  * @author fireshoes
  */
 public final class YoreTillerNephilim extends CardImpl {
@@ -31,8 +25,8 @@ public final class YoreTillerNephilim extends CardImpl {
         this.toughness = new MageInt(2);
 
         // Whenever Yore-Tiller Nephilim attacks, return target creature card from your graveyard to the battlefield tapped and attacking.
-        Ability ability = new AttacksTriggeredAbility(new YoreTillerNephilimEffect(), false);
-        ability.addTarget(new TargetCardInYourGraveyard(StaticFilters.FILTER_CARD_CREATURE));
+        Ability ability = new AttacksTriggeredAbility(new ReturnFromGraveyardToBattlefieldTargetEffect(true, true), false);
+        ability.addTarget(new TargetCardInYourGraveyard(StaticFilters.FILTER_CARD_CREATURE_YOUR_GRAVEYARD));
         this.addAbility(ability);
     }
 
@@ -45,39 +39,3 @@ public final class YoreTillerNephilim extends CardImpl {
         return new YoreTillerNephilim(this);
     }
 }
-
-class YoreTillerNephilimEffect extends OneShotEffect {
-
-    public YoreTillerNephilimEffect() {
-        super(Outcome.PutCreatureInPlay);
-        this.staticText = "return target creature card from your graveyard to the battlefield tapped and attacking";
-    }
-
-    public YoreTillerNephilimEffect(final YoreTillerNephilimEffect effect) {
-        super(effect);
-    }
-
-    @Override
-    public boolean apply(Game game, Ability source) {
-        Player controller = game.getPlayer(source.getControllerId());
-
-        if (controller != null) {
-            Card card = game.getCard(getTargetPointer().getFirst(game, source));
-            if (card != null) {
-                controller.moveCards(card, Zone.BATTLEFIELD, source, game, true, false, false, null);
-                Permanent permanent = game.getPermanent(card.getId());
-                if (permanent != null) {
-                    game.getCombat().addAttackingCreature(permanent.getId(), game);
-                }
-            }
-            return true;
-
-        }
-        return false;
-    }
-
-    @Override
-    public YoreTillerNephilimEffect copy() {
-        return new YoreTillerNephilimEffect(this);
-    }
-}
diff --git a/Mage.Sets/src/mage/sets/InnistradMidnightHunt.java b/Mage.Sets/src/mage/sets/InnistradMidnightHunt.java
index 4a76d3ebdc..285eb059df 100644
--- a/Mage.Sets/src/mage/sets/InnistradMidnightHunt.java
+++ b/Mage.Sets/src/mage/sets/InnistradMidnightHunt.java
@@ -46,6 +46,7 @@ public final class InnistradMidnightHunt extends ExpansionSet {
         cards.add(new SetCardInfo("Baithook Angler", 42, Rarity.COMMON, mage.cards.b.BaithookAngler.class));
         cards.add(new SetCardInfo("Bat Whisperer", 86, Rarity.COMMON, mage.cards.b.BatWhisperer.class));
         cards.add(new SetCardInfo("Benevolent Geist", 61, Rarity.RARE, mage.cards.b.BenevolentGeist.class));
+        cards.add(new SetCardInfo("Bereaved Survivor", 4, Rarity.UNCOMMON, mage.cards.b.BereavedSurvivor.class));
         cards.add(new SetCardInfo("Bird Admirer", 169, Rarity.COMMON, mage.cards.b.BirdAdmirer.class));
         cards.add(new SetCardInfo("Bladebrand", 87, Rarity.COMMON, mage.cards.b.Bladebrand.class));
         cards.add(new SetCardInfo("Bladestitched Skaab", 212, Rarity.UNCOMMON, mage.cards.b.BladestitchedSkaab.class));
@@ -90,6 +91,7 @@ public final class InnistradMidnightHunt extends ExpansionSet {
         cards.add(new SetCardInfo("Curse of Shaken Faith", 134, Rarity.RARE, mage.cards.c.CurseOfShakenFaith.class));
         cards.add(new SetCardInfo("Curse of Silence", 15, Rarity.RARE, mage.cards.c.CurseOfSilence.class));
         cards.add(new SetCardInfo("Curse of Surveillance", 46, Rarity.RARE, mage.cards.c.CurseOfSurveillance.class));
+        cards.add(new SetCardInfo("Dauntless Avenger", 4, Rarity.UNCOMMON, mage.cards.d.DauntlessAvenger.class));
         cards.add(new SetCardInfo("Dawnhart Mentor", 179, Rarity.UNCOMMON, mage.cards.d.DawnhartMentor.class));
         cards.add(new SetCardInfo("Dawnhart Rejuvenator", 180, Rarity.COMMON, mage.cards.d.DawnhartRejuvenator.class));
         cards.add(new SetCardInfo("Dawnhart Wardens", 216, Rarity.UNCOMMON, mage.cards.d.DawnhartWardens.class));
diff --git a/Mage/src/main/java/mage/abilities/effects/common/ReturnFromGraveyardToBattlefieldTargetEffect.java b/Mage/src/main/java/mage/abilities/effects/common/ReturnFromGraveyardToBattlefieldTargetEffect.java
index 860bfef7ed..617f651e26 100644
--- a/Mage/src/main/java/mage/abilities/effects/common/ReturnFromGraveyardToBattlefieldTargetEffect.java
+++ b/Mage/src/main/java/mage/abilities/effects/common/ReturnFromGraveyardToBattlefieldTargetEffect.java
@@ -22,19 +22,26 @@ import java.util.UUID;
 public class ReturnFromGraveyardToBattlefieldTargetEffect extends OneShotEffect {
 
     private final boolean tapped;
+    private final boolean attacking;
 
     public ReturnFromGraveyardToBattlefieldTargetEffect() {
         this(false);
     }
 
     public ReturnFromGraveyardToBattlefieldTargetEffect(boolean tapped) {
+        this(tapped, false);
+    }
+
+    public ReturnFromGraveyardToBattlefieldTargetEffect(boolean tapped, boolean attacking) {
         super(Outcome.PutCreatureInPlay);
         this.tapped = tapped;
+        this.attacking = attacking;
     }
 
     protected ReturnFromGraveyardToBattlefieldTargetEffect(final ReturnFromGraveyardToBattlefieldTargetEffect effect) {
         super(effect);
         this.tapped = effect.tapped;
+        this.attacking = effect.attacking;
     }
 
     @Override
@@ -54,6 +61,11 @@ public class ReturnFromGraveyardToBattlefieldTargetEffect extends OneShotEffect
                 }
             }
             controller.moveCards(cardsToMove, Zone.BATTLEFIELD, source, game, tapped, false, false, null);
+            if (attacking) {
+                for (Card card : cardsToMove) {
+                    game.getCombat().addAttackingCreature(card.getId(), game);
+                }
+            }
             return true;
         }
         return false;
@@ -82,8 +94,12 @@ public class ReturnFromGraveyardToBattlefieldTargetEffect extends OneShotEffect
         }
         sb.append(yourGrave ? " to" : " onto");
         sb.append(" the battlefield");
-        if (tapped) {
+        if (tapped && attacking) {
+            sb.append(" tapped and attacking");
+        } else if (tapped) {
             sb.append(" tapped");
+        } else if (attacking) {
+            sb.append(" attacking");
         }
         if (!yourGrave) {
             sb.append(" under your control");