diff --git a/Mage.Sets/src/mage/cards/c/ChiefEngineer.java b/Mage.Sets/src/mage/cards/c/ChiefEngineer.java
index 0408fb47db..155dc0c860 100644
--- a/Mage.Sets/src/mage/cards/c/ChiefEngineer.java
+++ b/Mage.Sets/src/mage/cards/c/ChiefEngineer.java
@@ -9,7 +9,10 @@ import mage.cards.CardSetInfo;
 import mage.constants.CardType;
 import mage.constants.SubType;
 import mage.constants.Zone;
+import mage.filter.FilterCard;
 import mage.filter.common.FilterArtifactCard;
+import mage.filter.predicate.Predicates;
+import mage.filter.predicate.mageobject.AbilityPredicate;
 
 import java.util.UUID;
 
@@ -18,6 +21,13 @@ import java.util.UUID;
  */
 public final class ChiefEngineer extends CardImpl {
 
+    private static final FilterCard filter = new FilterArtifactCard("artifact spells");
+
+    static {
+        filter.add(Predicates.not(CardType.LAND.getPredicate()));
+        filter.add(Predicates.not(new AbilityPredicate(ConvokeAbility.class))); // So there are not redundant copies being added to each card
+    }
+
     public ChiefEngineer(UUID ownerId, CardSetInfo setInfo) {
         super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{U}");
         this.subtype.add(SubType.VEDALKEN);
@@ -27,8 +37,7 @@ public final class ChiefEngineer extends CardImpl {
         this.toughness = new MageInt(3);
 
         // Artifact spells you cast have convoke.
-        this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityControlledSpellsEffect(new ConvokeAbility(), new FilterArtifactCard("Artifact spells you cast"))));
-
+        this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityControlledSpellsEffect(new ConvokeAbility(), filter)));
     }
 
     private ChiefEngineer(final ChiefEngineer card) {