diff --git a/Mage.Sets/src/mage/cards/a/AkiriFearlessVoyager.java b/Mage.Sets/src/mage/cards/a/AkiriFearlessVoyager.java
index 26d165568c..a7583635ab 100644
--- a/Mage.Sets/src/mage/cards/a/AkiriFearlessVoyager.java
+++ b/Mage.Sets/src/mage/cards/a/AkiriFearlessVoyager.java
@@ -103,7 +103,7 @@ class AkiriFearlessVoyagerTriggeredAbility extends TriggeredAbilityImpl {
 
 class AkiriFearlessVoyagerEffect extends OneShotEffect {
 
-    private static enum AkiriFearlessVoyagerPredicate implements ObjectSourcePlayerPredicate<ObjectSourcePlayer<Permanent>> {
+    private static enum AkiriFearlessVoyagerPredicate implements ObjectSourcePlayerPredicate<Permanent> {
         instance;
 
         @Override
diff --git a/Mage.Sets/src/mage/cards/a/AuraGraft.java b/Mage.Sets/src/mage/cards/a/AuraGraft.java
index 519b2d25dc..27fad23790 100644
--- a/Mage.Sets/src/mage/cards/a/AuraGraft.java
+++ b/Mage.Sets/src/mage/cards/a/AuraGraft.java
@@ -54,7 +54,7 @@ public final class AuraGraft extends CardImpl {
     }
 }
 
-class AttachedToPermanentPredicate implements ObjectSourcePlayerPredicate<ObjectSourcePlayer<Permanent>> {
+class AttachedToPermanentPredicate implements ObjectSourcePlayerPredicate<Permanent> {
 
     public AttachedToPermanentPredicate() {
         super();
@@ -66,7 +66,7 @@ class AttachedToPermanentPredicate implements ObjectSourcePlayerPredicate<Object
     }
 }
 
-class PermanentCanBeAttachedToPredicate implements ObjectSourcePlayerPredicate<ObjectSourcePlayer<Permanent>> {
+class PermanentCanBeAttachedToPredicate implements ObjectSourcePlayerPredicate<Permanent> {
 
     protected Permanent aura;
 
diff --git a/Mage.Sets/src/mage/cards/b/BarteredCow.java b/Mage.Sets/src/mage/cards/b/BarteredCow.java
index 9675188862..707e63fa07 100644
--- a/Mage.Sets/src/mage/cards/b/BarteredCow.java
+++ b/Mage.Sets/src/mage/cards/b/BarteredCow.java
@@ -56,7 +56,7 @@ public final class BarteredCow extends CardImpl {
     }
 }
 
-enum BarteredCowPredicate implements ObjectSourcePlayerPredicate<ObjectSourcePlayer<MageObject>> {
+enum BarteredCowPredicate implements ObjectSourcePlayerPredicate<MageObject> {
     instance;
 
     @Override
diff --git a/Mage.Sets/src/mage/cards/b/Bioshift.java b/Mage.Sets/src/mage/cards/b/Bioshift.java
index 9725347d4c..d8b750d9ac 100644
--- a/Mage.Sets/src/mage/cards/b/Bioshift.java
+++ b/Mage.Sets/src/mage/cards/b/Bioshift.java
@@ -100,7 +100,7 @@ class MoveCounterFromTargetToTargetEffect extends OneShotEffect {
     }
 }
 
-class SameControllerPredicate implements ObjectSourcePlayerPredicate<ObjectSourcePlayer<MageItem>> {
+class SameControllerPredicate implements ObjectSourcePlayerPredicate<MageItem> {
 
     @Override
     public boolean apply(ObjectSourcePlayer<MageItem> input, Game game) {
diff --git a/Mage.Sets/src/mage/cards/b/BoreasCharger.java b/Mage.Sets/src/mage/cards/b/BoreasCharger.java
index fcc8013355..7169a5d124 100644
--- a/Mage.Sets/src/mage/cards/b/BoreasCharger.java
+++ b/Mage.Sets/src/mage/cards/b/BoreasCharger.java
@@ -138,7 +138,7 @@ class BoreasChargerEffect extends OneShotEffect {
     }
 }
 
-class BoreasChargerPredicate implements ObjectSourcePlayerPredicate<ObjectSourcePlayer<Player>> {
+class BoreasChargerPredicate implements ObjectSourcePlayerPredicate<Player> {
 
     @Override
     public boolean apply(ObjectSourcePlayer<Player> input, Game game) {
diff --git a/Mage.Sets/src/mage/cards/c/CeruleanDrake.java b/Mage.Sets/src/mage/cards/c/CeruleanDrake.java
index f4c831dce9..c65cdd0833 100644
--- a/Mage.Sets/src/mage/cards/c/CeruleanDrake.java
+++ b/Mage.Sets/src/mage/cards/c/CeruleanDrake.java
@@ -61,7 +61,7 @@ public final class CeruleanDrake extends CardImpl {
     }
 }
 
-enum CeruleanDrakePredicate implements ObjectSourcePlayerPredicate<ObjectSourcePlayer<StackObject>> {
+enum CeruleanDrakePredicate implements ObjectSourcePlayerPredicate<StackObject> {
     instance;
 
     @Override
diff --git a/Mage.Sets/src/mage/cards/c/ConduitOfRuin.java b/Mage.Sets/src/mage/cards/c/ConduitOfRuin.java
index dfd4a39e22..f9e79a610d 100644
--- a/Mage.Sets/src/mage/cards/c/ConduitOfRuin.java
+++ b/Mage.Sets/src/mage/cards/c/ConduitOfRuin.java
@@ -100,7 +100,7 @@ class ConduitOfRuinWatcher extends Watcher {
     }
 }
 
-class FirstCastCreatureSpellPredicate implements ObjectSourcePlayerPredicate<ObjectSourcePlayer<Controllable>> {
+class FirstCastCreatureSpellPredicate implements ObjectSourcePlayerPredicate<Controllable> {
 
     @Override
     public boolean apply(ObjectSourcePlayer<Controllable> input, Game game) {
diff --git a/Mage.Sets/src/mage/cards/c/CrownOfDoom.java b/Mage.Sets/src/mage/cards/c/CrownOfDoom.java
index 295c2a27e2..6d6b266934 100644
--- a/Mage.Sets/src/mage/cards/c/CrownOfDoom.java
+++ b/Mage.Sets/src/mage/cards/c/CrownOfDoom.java
@@ -72,7 +72,7 @@ public final class CrownOfDoom extends CardImpl {
     }
 }
 
-enum CrownOfDoomPredicate implements ObjectSourcePlayerPredicate<ObjectSourcePlayer<Player>> {
+enum CrownOfDoomPredicate implements ObjectSourcePlayerPredicate<Player> {
     instance;
 
     @Override
diff --git a/Mage.Sets/src/mage/cards/c/CullingScales.java b/Mage.Sets/src/mage/cards/c/CullingScales.java
index 0d3922d4a0..9bddf1d536 100644
--- a/Mage.Sets/src/mage/cards/c/CullingScales.java
+++ b/Mage.Sets/src/mage/cards/c/CullingScales.java
@@ -52,7 +52,7 @@ public final class CullingScales extends CardImpl {
 
 }
 
-class HasLowestCMCAmongstNonlandPermanentsPredicate implements ObjectSourcePlayerPredicate<ObjectSourcePlayer<Permanent>> {
+class HasLowestCMCAmongstNonlandPermanentsPredicate implements ObjectSourcePlayerPredicate<Permanent> {
 
     @Override
     public boolean apply(ObjectSourcePlayer<Permanent> input, Game game) {
diff --git a/Mage.Sets/src/mage/cards/d/DawnCharm.java b/Mage.Sets/src/mage/cards/d/DawnCharm.java
index db5b065bd3..76e1553118 100644
--- a/Mage.Sets/src/mage/cards/d/DawnCharm.java
+++ b/Mage.Sets/src/mage/cards/d/DawnCharm.java
@@ -59,7 +59,7 @@ public final class DawnCharm extends CardImpl {
     }
 }
 
-class DawnCharmPredicate implements ObjectSourcePlayerPredicate<ObjectSourcePlayer<StackObject>> {
+class DawnCharmPredicate implements ObjectSourcePlayerPredicate<StackObject> {
 
     @Override
     public boolean apply(ObjectSourcePlayer<StackObject> input, Game game) {
diff --git a/Mage.Sets/src/mage/cards/d/DevoutHarpist.java b/Mage.Sets/src/mage/cards/d/DevoutHarpist.java
index 1dbd8aebcc..0f6c9a2ca2 100644
--- a/Mage.Sets/src/mage/cards/d/DevoutHarpist.java
+++ b/Mage.Sets/src/mage/cards/d/DevoutHarpist.java
@@ -56,7 +56,7 @@ public final class DevoutHarpist extends CardImpl {
 
 }
 
-class DevoutHarpistPredicate implements ObjectSourcePlayerPredicate<ObjectSourcePlayer<Permanent>> {
+class DevoutHarpistPredicate implements ObjectSourcePlayerPredicate<Permanent> {
     @Override
     public boolean apply(ObjectSourcePlayer<Permanent> input, Game game) {
         Permanent attachment = input.getObject();
diff --git a/Mage.Sets/src/mage/cards/d/DiamondKnight.java b/Mage.Sets/src/mage/cards/d/DiamondKnight.java
index 406854098e..d1e089376b 100644
--- a/Mage.Sets/src/mage/cards/d/DiamondKnight.java
+++ b/Mage.Sets/src/mage/cards/d/DiamondKnight.java
@@ -59,7 +59,7 @@ public final class DiamondKnight extends CardImpl {
     }
 }
 
-enum DiamondKnightPredicate implements ObjectSourcePlayerPredicate<ObjectSourcePlayer<MageObject>> {
+enum DiamondKnightPredicate implements ObjectSourcePlayerPredicate<MageObject> {
     instance;
 
     @Override
diff --git a/Mage.Sets/src/mage/cards/d/DiseasedVermin.java b/Mage.Sets/src/mage/cards/d/DiseasedVermin.java
index efc3185924..ad0957bafa 100644
--- a/Mage.Sets/src/mage/cards/d/DiseasedVermin.java
+++ b/Mage.Sets/src/mage/cards/d/DiseasedVermin.java
@@ -114,7 +114,7 @@ class DiseasedVerminEffect extends OneShotEffect {
     }
 }
 
-class DiseasedVerminPredicate implements ObjectSourcePlayerPredicate<ObjectSourcePlayer<Player>> {
+class DiseasedVerminPredicate implements ObjectSourcePlayerPredicate<Player> {
 
     @Override
     public boolean apply(ObjectSourcePlayer<Player> input, Game game) {
diff --git a/Mage.Sets/src/mage/cards/d/DreadhordeArcanist.java b/Mage.Sets/src/mage/cards/d/DreadhordeArcanist.java
index 8ba2508b57..58c6deb298 100644
--- a/Mage.Sets/src/mage/cards/d/DreadhordeArcanist.java
+++ b/Mage.Sets/src/mage/cards/d/DreadhordeArcanist.java
@@ -69,7 +69,7 @@ public final class DreadhordeArcanist extends CardImpl {
     }
 }
 
-enum DreadhordeArcanistPredicate implements ObjectSourcePlayerPredicate<ObjectSourcePlayer<Card>> {
+enum DreadhordeArcanistPredicate implements ObjectSourcePlayerPredicate<Card> {
     instance;
 
     @Override
diff --git a/Mage.Sets/src/mage/cards/e/EarthshakerKhenra.java b/Mage.Sets/src/mage/cards/e/EarthshakerKhenra.java
index 126accce1b..41343176fd 100644
--- a/Mage.Sets/src/mage/cards/e/EarthshakerKhenra.java
+++ b/Mage.Sets/src/mage/cards/e/EarthshakerKhenra.java
@@ -68,7 +68,7 @@ public final class EarthshakerKhenra extends CardImpl {
     }
 }
 
-enum EarthshakerKhenraPredicate implements ObjectSourcePlayerPredicate<ObjectSourcePlayer<Card>> {
+enum EarthshakerKhenraPredicate implements ObjectSourcePlayerPredicate<Card> {
     instance;
 
     @Override
diff --git a/Mage.Sets/src/mage/cards/e/EliteHeadhunter.java b/Mage.Sets/src/mage/cards/e/EliteHeadhunter.java
index d06d5be260..c28c80af80 100644
--- a/Mage.Sets/src/mage/cards/e/EliteHeadhunter.java
+++ b/Mage.Sets/src/mage/cards/e/EliteHeadhunter.java
@@ -63,7 +63,7 @@ public final class EliteHeadhunter extends CardImpl {
     }
 }
 
-enum EliteHeadhunterPredicate implements ObjectSourcePlayerPredicate<ObjectSourcePlayer<MageObject>> {
+enum EliteHeadhunterPredicate implements ObjectSourcePlayerPredicate<MageObject> {
     instance;
 
     @Override
diff --git a/Mage.Sets/src/mage/cards/e/EnchantmentAlteration.java b/Mage.Sets/src/mage/cards/e/EnchantmentAlteration.java
index 2b65428dec..1af558de01 100644
--- a/Mage.Sets/src/mage/cards/e/EnchantmentAlteration.java
+++ b/Mage.Sets/src/mage/cards/e/EnchantmentAlteration.java
@@ -62,7 +62,7 @@ public final class EnchantmentAlteration extends CardImpl {
 
 }
 
-class SharesEnchantedCardTypePredicate implements ObjectSourcePlayerPredicate<ObjectSourcePlayer<MageItem>> {
+class SharesEnchantedCardTypePredicate implements ObjectSourcePlayerPredicate<MageItem> {
 
     @Override
     public boolean apply(ObjectSourcePlayer<MageItem> input, Game game) {
diff --git a/Mage.Sets/src/mage/cards/e/EvilTwin.java b/Mage.Sets/src/mage/cards/e/EvilTwin.java
index 047e18248d..c2f531b9f3 100644
--- a/Mage.Sets/src/mage/cards/e/EvilTwin.java
+++ b/Mage.Sets/src/mage/cards/e/EvilTwin.java
@@ -75,7 +75,7 @@ class EvilTwinCopyApplier extends CopyApplier {
 
 }
 
-class EvilTwinPredicate implements ObjectSourcePlayerPredicate<ObjectSourcePlayer<Permanent>> {
+class EvilTwinPredicate implements ObjectSourcePlayerPredicate<Permanent> {
 
     @Override
     public boolean apply(ObjectSourcePlayer<Permanent> input, Game game) {
diff --git a/Mage.Sets/src/mage/cards/f/FalseOrders.java b/Mage.Sets/src/mage/cards/f/FalseOrders.java
index f788ead8b0..8b4b1cf5be 100644
--- a/Mage.Sets/src/mage/cards/f/FalseOrders.java
+++ b/Mage.Sets/src/mage/cards/f/FalseOrders.java
@@ -64,7 +64,7 @@ public final class FalseOrders extends CardImpl {
 
 }
 
-enum FalseOrdersDefendingPlayerControlsPredicate implements ObjectSourcePlayerPredicate<ObjectSourcePlayer<Controllable>> {
+enum FalseOrdersDefendingPlayerControlsPredicate implements ObjectSourcePlayerPredicate<Controllable> {
     instance;
 
     @Override
diff --git a/Mage.Sets/src/mage/cards/f/FireAndBrimstone.java b/Mage.Sets/src/mage/cards/f/FireAndBrimstone.java
index 6dc7fe7f3d..f7258a53ac 100644
--- a/Mage.Sets/src/mage/cards/f/FireAndBrimstone.java
+++ b/Mage.Sets/src/mage/cards/f/FireAndBrimstone.java
@@ -45,7 +45,7 @@ public final class FireAndBrimstone extends CardImpl {
     }
 }
 
-enum FireAndBrimstonePredicate implements ObjectSourcePlayerPredicate<ObjectSourcePlayer<Player>> {
+enum FireAndBrimstonePredicate implements ObjectSourcePlayerPredicate<Player> {
     instance;
 
     @Override
diff --git a/Mage.Sets/src/mage/cards/f/FiresOfInvention.java b/Mage.Sets/src/mage/cards/f/FiresOfInvention.java
index 2383d18bfc..7cc79d3527 100644
--- a/Mage.Sets/src/mage/cards/f/FiresOfInvention.java
+++ b/Mage.Sets/src/mage/cards/f/FiresOfInvention.java
@@ -52,7 +52,7 @@ public final class FiresOfInvention extends CardImpl {
     }
 }
 
-enum FiresOfInventionPredicate implements ObjectSourcePlayerPredicate<ObjectSourcePlayer<MageObject>> {
+enum FiresOfInventionPredicate implements ObjectSourcePlayerPredicate<MageObject> {
     instance;
 
     @Override
diff --git a/Mage.Sets/src/mage/cards/f/FirjasRetribution.java b/Mage.Sets/src/mage/cards/f/FirjasRetribution.java
index 56f0adbfbf..d4ea16d5d2 100644
--- a/Mage.Sets/src/mage/cards/f/FirjasRetribution.java
+++ b/Mage.Sets/src/mage/cards/f/FirjasRetribution.java
@@ -75,7 +75,7 @@ public final class FirjasRetribution extends CardImpl {
     }
 }
 
-enum FirjasRetributionPredicate implements ObjectSourcePlayerPredicate<ObjectSourcePlayer<Permanent>> {
+enum FirjasRetributionPredicate implements ObjectSourcePlayerPredicate<Permanent> {
     instance;
 
     @Override
diff --git a/Mage.Sets/src/mage/cards/f/FlameSweep.java b/Mage.Sets/src/mage/cards/f/FlameSweep.java
index e40d1c9762..801cfed213 100644
--- a/Mage.Sets/src/mage/cards/f/FlameSweep.java
+++ b/Mage.Sets/src/mage/cards/f/FlameSweep.java
@@ -43,7 +43,7 @@ public final class FlameSweep extends CardImpl {
     }
 }
 
-enum FlameSweepPredicate implements ObjectSourcePlayerPredicate<ObjectSourcePlayer<Permanent>> {
+enum FlameSweepPredicate implements ObjectSourcePlayerPredicate<Permanent> {
     instance;
 
     @Override
diff --git a/Mage.Sets/src/mage/cards/f/FrostpyreArcanist.java b/Mage.Sets/src/mage/cards/f/FrostpyreArcanist.java
index f17f0b31a1..e6b0102c6a 100644
--- a/Mage.Sets/src/mage/cards/f/FrostpyreArcanist.java
+++ b/Mage.Sets/src/mage/cards/f/FrostpyreArcanist.java
@@ -79,7 +79,7 @@ public final class FrostpyreArcanist extends CardImpl {
     }
 }
 
-enum FrostpyreArcanistPredicate implements ObjectSourcePlayerPredicate<ObjectSourcePlayer<Card>> {
+enum FrostpyreArcanistPredicate implements ObjectSourcePlayerPredicate<Card> {
     instance;
 
     @Override
diff --git a/Mage.Sets/src/mage/cards/g/GomaFadaVanguard.java b/Mage.Sets/src/mage/cards/g/GomaFadaVanguard.java
index 725ed0fd9a..ae5bb8e7cf 100644
--- a/Mage.Sets/src/mage/cards/g/GomaFadaVanguard.java
+++ b/Mage.Sets/src/mage/cards/g/GomaFadaVanguard.java
@@ -66,7 +66,7 @@ public final class GomaFadaVanguard extends CardImpl {
     }
 }
 
-enum GomaFadaVanguardPredicate implements ObjectSourcePlayerPredicate<ObjectSourcePlayer<MageObject>> {
+enum GomaFadaVanguardPredicate implements ObjectSourcePlayerPredicate<MageObject> {
     instance;
     private static final FilterPermanent filter = new FilterPermanent(SubType.WARRIOR, "");
 
diff --git a/Mage.Sets/src/mage/cards/g/GyrusWakerOfCorpses.java b/Mage.Sets/src/mage/cards/g/GyrusWakerOfCorpses.java
index 48dc31882c..28f936bdeb 100644
--- a/Mage.Sets/src/mage/cards/g/GyrusWakerOfCorpses.java
+++ b/Mage.Sets/src/mage/cards/g/GyrusWakerOfCorpses.java
@@ -105,7 +105,7 @@ class GyrusWakerOfCorpsesEffect extends OneShotEffect {
     }
 }
 
-class GyrusWakerOfCorpsesPowerLessThanSourcePredicate implements ObjectSourcePlayerPredicate<ObjectSourcePlayer<Card>> {
+class GyrusWakerOfCorpsesPowerLessThanSourcePredicate implements ObjectSourcePlayerPredicate<Card> {
 
     @Override
     public boolean apply(ObjectSourcePlayer<Card> input, Game game) {
diff --git a/Mage.Sets/src/mage/cards/h/HaktosTheUnscarred.java b/Mage.Sets/src/mage/cards/h/HaktosTheUnscarred.java
index 3a585e8ee9..dd5a6e39c1 100644
--- a/Mage.Sets/src/mage/cards/h/HaktosTheUnscarred.java
+++ b/Mage.Sets/src/mage/cards/h/HaktosTheUnscarred.java
@@ -101,7 +101,7 @@ class HaktosTheUnscarredChooseEffect extends OneShotEffect {
     }
 }
 
-enum HaktosTheUnscarredPredicate implements ObjectSourcePlayerPredicate<ObjectSourcePlayer<Card>> {
+enum HaktosTheUnscarredPredicate implements ObjectSourcePlayerPredicate<Card> {
     instance;
 
     @Override
diff --git a/Mage.Sets/src/mage/cards/h/HalvarGodOfBattle.java b/Mage.Sets/src/mage/cards/h/HalvarGodOfBattle.java
index 4d2513cc5c..d2e1568137 100644
--- a/Mage.Sets/src/mage/cards/h/HalvarGodOfBattle.java
+++ b/Mage.Sets/src/mage/cards/h/HalvarGodOfBattle.java
@@ -181,7 +181,7 @@ class SwordOfTheRealmsEffect extends OneShotEffect {
     }
 }
 
-class HalvarGodOfBattlePredicate implements ObjectSourcePlayerPredicate<ObjectSourcePlayer<Permanent>> {
+class HalvarGodOfBattlePredicate implements ObjectSourcePlayerPredicate<Permanent> {
 
     private final FilterPermanent filter;
 
diff --git a/Mage.Sets/src/mage/cards/h/HinderingLight.java b/Mage.Sets/src/mage/cards/h/HinderingLight.java
index 21838f6aa4..f0589a0787 100644
--- a/Mage.Sets/src/mage/cards/h/HinderingLight.java
+++ b/Mage.Sets/src/mage/cards/h/HinderingLight.java
@@ -49,7 +49,7 @@ public final class HinderingLight extends CardImpl {
     }
 }
 
-class HinderingLightPredicate implements ObjectSourcePlayerPredicate<ObjectSourcePlayer<StackObject>> {
+class HinderingLightPredicate implements ObjectSourcePlayerPredicate<StackObject> {
 
     @Override
     public boolean apply(ObjectSourcePlayer<StackObject> input, Game game) {
diff --git a/Mage.Sets/src/mage/cards/h/HopeOfGhirapur.java b/Mage.Sets/src/mage/cards/h/HopeOfGhirapur.java
index f9a870d5b4..9a8fa22470 100644
--- a/Mage.Sets/src/mage/cards/h/HopeOfGhirapur.java
+++ b/Mage.Sets/src/mage/cards/h/HopeOfGhirapur.java
@@ -114,7 +114,7 @@ class HopeOfGhirapurCantCastEffect extends ContinuousRuleModifyingEffectImpl {
     }
 }
 
-class HopeOfGhirapurPlayerLostLifePredicate implements ObjectSourcePlayerPredicate<ObjectSourcePlayer<Player>> {
+class HopeOfGhirapurPlayerLostLifePredicate implements ObjectSourcePlayerPredicate<Player> {
 
     public HopeOfGhirapurPlayerLostLifePredicate() {
     }
diff --git a/Mage.Sets/src/mage/cards/j/JeweledTorque.java b/Mage.Sets/src/mage/cards/j/JeweledTorque.java
index 2d3e25c715..ad295d7912 100644
--- a/Mage.Sets/src/mage/cards/j/JeweledTorque.java
+++ b/Mage.Sets/src/mage/cards/j/JeweledTorque.java
@@ -56,7 +56,7 @@ public final class JeweledTorque extends CardImpl {
     }
 }
 
-enum JeweledTorquePredicate implements ObjectSourcePlayerPredicate<ObjectSourcePlayer<MageObject>> {
+enum JeweledTorquePredicate implements ObjectSourcePlayerPredicate<MageObject> {
     instance;
 
     @Override
diff --git a/Mage.Sets/src/mage/cards/k/KeeperOfTheDead.java b/Mage.Sets/src/mage/cards/k/KeeperOfTheDead.java
index 50249cf421..387a3a2442 100644
--- a/Mage.Sets/src/mage/cards/k/KeeperOfTheDead.java
+++ b/Mage.Sets/src/mage/cards/k/KeeperOfTheDead.java
@@ -74,7 +74,7 @@ public final class KeeperOfTheDead extends CardImpl {
     }
 }
 
-class KeeperOfDeadPredicate implements ObjectSourcePlayerPredicate<ObjectSourcePlayer<Player>> {
+class KeeperOfDeadPredicate implements ObjectSourcePlayerPredicate<Player> {
 
     private static final FilterCard filter = new FilterCard("creature cards");
 
diff --git a/Mage.Sets/src/mage/cards/k/KeeperOfTheFlame.java b/Mage.Sets/src/mage/cards/k/KeeperOfTheFlame.java
index 9e5cfb6ec3..6c1d1015ae 100644
--- a/Mage.Sets/src/mage/cards/k/KeeperOfTheFlame.java
+++ b/Mage.Sets/src/mage/cards/k/KeeperOfTheFlame.java
@@ -58,7 +58,7 @@ public final class KeeperOfTheFlame extends CardImpl {
     }
 }
 
-class KeeperOfTheFlamePredicate implements ObjectSourcePlayerPredicate<ObjectSourcePlayer<Player>> {
+class KeeperOfTheFlamePredicate implements ObjectSourcePlayerPredicate<Player> {
     
     @Override
     public boolean apply(ObjectSourcePlayer<Player> input, Game game) {
diff --git a/Mage.Sets/src/mage/cards/k/KeeperOfTheMind.java b/Mage.Sets/src/mage/cards/k/KeeperOfTheMind.java
index fb3779ac29..3e943da727 100644
--- a/Mage.Sets/src/mage/cards/k/KeeperOfTheMind.java
+++ b/Mage.Sets/src/mage/cards/k/KeeperOfTheMind.java
@@ -102,7 +102,7 @@ enum KeeperOfTheMindAdjuster implements TargetAdjuster {
     }
 }
 
-class KeeperOfTheMindPredicate implements ObjectSourcePlayerPredicate<ObjectSourcePlayer<Player>> {
+class KeeperOfTheMindPredicate implements ObjectSourcePlayerPredicate<Player> {
 
     @Override
     public boolean apply(ObjectSourcePlayer<Player> input, Game game) {
diff --git a/Mage.Sets/src/mage/cards/k/KitesailSkirmisher.java b/Mage.Sets/src/mage/cards/k/KitesailSkirmisher.java
index 38e8c6a176..87ce26c7c3 100644
--- a/Mage.Sets/src/mage/cards/k/KitesailSkirmisher.java
+++ b/Mage.Sets/src/mage/cards/k/KitesailSkirmisher.java
@@ -69,7 +69,7 @@ public final class KitesailSkirmisher extends CardImpl {
     }
 }
 
-enum KitesailSkirmisherPredicate implements ObjectSourcePlayerPredicate<ObjectSourcePlayer<MageObject>> {
+enum KitesailSkirmisherPredicate implements ObjectSourcePlayerPredicate<MageObject> {
     instance;
 
     @Override
diff --git a/Mage.Sets/src/mage/cards/k/KumenasSpeaker.java b/Mage.Sets/src/mage/cards/k/KumenasSpeaker.java
index 9626941ed4..0e3521712e 100644
--- a/Mage.Sets/src/mage/cards/k/KumenasSpeaker.java
+++ b/Mage.Sets/src/mage/cards/k/KumenasSpeaker.java
@@ -48,7 +48,7 @@ public final class KumenasSpeaker extends CardImpl {
     }
 }
 
-enum KumenasSpeakerPredicate implements ObjectSourcePlayerPredicate<ObjectSourcePlayer<MageObject>> {
+enum KumenasSpeakerPredicate implements ObjectSourcePlayerPredicate<MageObject> {
     instance;
 
     @Override
diff --git a/Mage.Sets/src/mage/cards/l/Legerdemain.java b/Mage.Sets/src/mage/cards/l/Legerdemain.java
index 89cff853c4..bf3f729578 100644
--- a/Mage.Sets/src/mage/cards/l/Legerdemain.java
+++ b/Mage.Sets/src/mage/cards/l/Legerdemain.java
@@ -55,7 +55,7 @@ public final class Legerdemain extends CardImpl {
     }
 }
 
-class SharesTypePredicate implements ObjectSourcePlayerPredicate<ObjectSourcePlayer<MageItem>> {
+class SharesTypePredicate implements ObjectSourcePlayerPredicate<MageItem> {
 
     @Override
     public boolean apply(ObjectSourcePlayer<MageItem> input, Game game) {
diff --git a/Mage.Sets/src/mage/cards/m/MalevolentNoble.java b/Mage.Sets/src/mage/cards/m/MalevolentNoble.java
index 611ecf4f3b..71c8dec34a 100644
--- a/Mage.Sets/src/mage/cards/m/MalevolentNoble.java
+++ b/Mage.Sets/src/mage/cards/m/MalevolentNoble.java
@@ -58,7 +58,7 @@ public final class MalevolentNoble extends CardImpl {
     }
 }
 
-enum MalevolentNoblePredicate implements ObjectSourcePlayerPredicate<ObjectSourcePlayer<MageObject>> {
+enum MalevolentNoblePredicate implements ObjectSourcePlayerPredicate<MageObject> {
     instance;
 
     @Override
diff --git a/Mage.Sets/src/mage/cards/m/MartialImpetus.java b/Mage.Sets/src/mage/cards/m/MartialImpetus.java
index e251becd38..a57193f549 100644
--- a/Mage.Sets/src/mage/cards/m/MartialImpetus.java
+++ b/Mage.Sets/src/mage/cards/m/MartialImpetus.java
@@ -64,7 +64,7 @@ public final class MartialImpetus extends CardImpl {
     }
 }
 
-enum MartialImpetusPredicate implements ObjectSourcePlayerPredicate<ObjectSourcePlayer<Permanent>> {
+enum MartialImpetusPredicate implements ObjectSourcePlayerPredicate<Permanent> {
     instance;
 
     @Override
diff --git a/Mage.Sets/src/mage/cards/m/MirrorSheen.java b/Mage.Sets/src/mage/cards/m/MirrorSheen.java
index e658e9a7fe..c77f0049e6 100644
--- a/Mage.Sets/src/mage/cards/m/MirrorSheen.java
+++ b/Mage.Sets/src/mage/cards/m/MirrorSheen.java
@@ -53,7 +53,7 @@ public final class MirrorSheen extends CardImpl {
     }
 }
 
-class TargetYouPredicate implements ObjectSourcePlayerPredicate<ObjectSourcePlayer<StackObject>> {
+class TargetYouPredicate implements ObjectSourcePlayerPredicate<StackObject> {
 
     @Override
     public boolean apply(ObjectSourcePlayer<StackObject> input, Game game) {
diff --git a/Mage.Sets/src/mage/cards/m/Mistfolk.java b/Mage.Sets/src/mage/cards/m/Mistfolk.java
index 0a6e5a971a..f4b6c58b68 100644
--- a/Mage.Sets/src/mage/cards/m/Mistfolk.java
+++ b/Mage.Sets/src/mage/cards/m/Mistfolk.java
@@ -60,7 +60,7 @@ public final class Mistfolk extends CardImpl {
     }
 }
 
-enum MistfolkPredicate implements ObjectSourcePlayerPredicate<ObjectSourcePlayer<Spell>> {
+enum MistfolkPredicate implements ObjectSourcePlayerPredicate<Spell> {
     instance;
 
     @Override
diff --git a/Mage.Sets/src/mage/cards/m/MistformWarchief.java b/Mage.Sets/src/mage/cards/m/MistformWarchief.java
index 4d71ee79c5..bc6260c717 100644
--- a/Mage.Sets/src/mage/cards/m/MistformWarchief.java
+++ b/Mage.Sets/src/mage/cards/m/MistformWarchief.java
@@ -58,7 +58,7 @@ public final class MistformWarchief extends CardImpl {
     }
 }
 
-class MistformWarchiefPredicate implements ObjectSourcePlayerPredicate<ObjectSourcePlayer<Card>> {
+class MistformWarchiefPredicate implements ObjectSourcePlayerPredicate<Card> {
 
     @Override
     public boolean apply(ObjectSourcePlayer<Card> input, Game game) {
diff --git a/Mage.Sets/src/mage/cards/m/MuckDrubb.java b/Mage.Sets/src/mage/cards/m/MuckDrubb.java
index c892e9bf5e..47f4327956 100644
--- a/Mage.Sets/src/mage/cards/m/MuckDrubb.java
+++ b/Mage.Sets/src/mage/cards/m/MuckDrubb.java
@@ -69,7 +69,7 @@ public final class MuckDrubb extends CardImpl {
     }
 }
 
-class SpellWithOnlySingleTargetPredicate implements ObjectSourcePlayerPredicate<ObjectSourcePlayer<Spell>> {
+class SpellWithOnlySingleTargetPredicate implements ObjectSourcePlayerPredicate<Spell> {
 
     @Override
     public boolean apply(ObjectSourcePlayer<Spell> input, Game game) {
diff --git a/Mage.Sets/src/mage/cards/o/OathOfDruids.java b/Mage.Sets/src/mage/cards/o/OathOfDruids.java
index ae1f201e04..ef54f07caf 100644
--- a/Mage.Sets/src/mage/cards/o/OathOfDruids.java
+++ b/Mage.Sets/src/mage/cards/o/OathOfDruids.java
@@ -66,7 +66,7 @@ enum OathOfDruidsAdjuster implements TargetAdjuster {
     }
 }
 
-class OathOfDruidsPredicate implements ObjectSourcePlayerPredicate<ObjectSourcePlayer<Player>> {
+class OathOfDruidsPredicate implements ObjectSourcePlayerPredicate<Player> {
 
     private static final FilterCreaturePermanent filter = new FilterCreaturePermanent();
 
diff --git a/Mage.Sets/src/mage/cards/o/OathOfGhouls.java b/Mage.Sets/src/mage/cards/o/OathOfGhouls.java
index e692587c55..dc1552060a 100644
--- a/Mage.Sets/src/mage/cards/o/OathOfGhouls.java
+++ b/Mage.Sets/src/mage/cards/o/OathOfGhouls.java
@@ -72,7 +72,7 @@ enum OathOfGhoulsAdjuster implements TargetAdjuster {
     }
 }
 
-class OathOfGhoulsPredicate implements ObjectSourcePlayerPredicate<ObjectSourcePlayer<Player>> {
+class OathOfGhoulsPredicate implements ObjectSourcePlayerPredicate<Player> {
 
     @Override
     public boolean apply(ObjectSourcePlayer<Player> input, Game game) {
diff --git a/Mage.Sets/src/mage/cards/o/OathOfLieges.java b/Mage.Sets/src/mage/cards/o/OathOfLieges.java
index 643d754d13..d09d554698 100644
--- a/Mage.Sets/src/mage/cards/o/OathOfLieges.java
+++ b/Mage.Sets/src/mage/cards/o/OathOfLieges.java
@@ -100,7 +100,7 @@ class OathOfLiegesEffect extends OneShotEffect {
     }
 }
 
-class OathOfLiegesPredicate implements ObjectSourcePlayerPredicate<ObjectSourcePlayer<Player>> {
+class OathOfLiegesPredicate implements ObjectSourcePlayerPredicate<Player> {
 
     @Override
     public boolean apply(ObjectSourcePlayer<Player> input, Game game) {
diff --git a/Mage.Sets/src/mage/cards/o/OathOfMages.java b/Mage.Sets/src/mage/cards/o/OathOfMages.java
index 0dbe5e0350..6d6efdef13 100644
--- a/Mage.Sets/src/mage/cards/o/OathOfMages.java
+++ b/Mage.Sets/src/mage/cards/o/OathOfMages.java
@@ -66,7 +66,7 @@ enum OathOfMagesAdjuster implements TargetAdjuster {
     }
 }
 
-enum OathOfMagesPredicate implements ObjectSourcePlayerPredicate<ObjectSourcePlayer<Player>> {
+enum OathOfMagesPredicate implements ObjectSourcePlayerPredicate<Player> {
     instance;
 
     @Override
diff --git a/Mage.Sets/src/mage/cards/o/OathOfScholars.java b/Mage.Sets/src/mage/cards/o/OathOfScholars.java
index 02c02dc71e..194a5709b9 100644
--- a/Mage.Sets/src/mage/cards/o/OathOfScholars.java
+++ b/Mage.Sets/src/mage/cards/o/OathOfScholars.java
@@ -64,7 +64,7 @@ enum OathOfScholarsAdjuster implements TargetAdjuster {
     }
 }
 
-class OathOfScholarsPredicate implements ObjectSourcePlayerPredicate<ObjectSourcePlayer<Player>> {
+class OathOfScholarsPredicate implements ObjectSourcePlayerPredicate<Player> {
 
     @Override
     public boolean apply(ObjectSourcePlayer<Player> input, Game game) {
diff --git a/Mage.Sets/src/mage/cards/o/OldManOfTheSea.java b/Mage.Sets/src/mage/cards/o/OldManOfTheSea.java
index 6e5ee08db4..4e376e46b3 100644
--- a/Mage.Sets/src/mage/cards/o/OldManOfTheSea.java
+++ b/Mage.Sets/src/mage/cards/o/OldManOfTheSea.java
@@ -148,7 +148,7 @@ class SourcePowerGreaterEqualTargetCondition implements Condition {
     }
 }
 
-class PowerLowerEqualSourcePredicate implements ObjectSourcePlayerPredicate<ObjectSourcePlayer<Permanent>> {
+class PowerLowerEqualSourcePredicate implements ObjectSourcePlayerPredicate<Permanent> {
 
     UUID sourceId;
 
diff --git a/Mage.Sets/src/mage/cards/p/PersonalEnergyShield.java b/Mage.Sets/src/mage/cards/p/PersonalEnergyShield.java
index a7294fdf46..7f63b56e16 100644
--- a/Mage.Sets/src/mage/cards/p/PersonalEnergyShield.java
+++ b/Mage.Sets/src/mage/cards/p/PersonalEnergyShield.java
@@ -46,7 +46,7 @@ public final class PersonalEnergyShield extends CardImpl {
     }
 }
 
-class PersonalEnergyFieldPredicate implements ObjectSourcePlayerPredicate<ObjectSourcePlayer<StackObject>> {
+class PersonalEnergyFieldPredicate implements ObjectSourcePlayerPredicate<StackObject> {
 
     @Override
     public boolean apply(ObjectSourcePlayer<StackObject> input, Game game) {
diff --git a/Mage.Sets/src/mage/cards/p/PsychicRebuttal.java b/Mage.Sets/src/mage/cards/p/PsychicRebuttal.java
index 2fcc52ca17..ac8dbac8b0 100644
--- a/Mage.Sets/src/mage/cards/p/PsychicRebuttal.java
+++ b/Mage.Sets/src/mage/cards/p/PsychicRebuttal.java
@@ -91,7 +91,7 @@ class PsychicRebuttalEffect extends OneShotEffect {
     }
 }
 
-class PsychicRebuttalPredicate implements ObjectSourcePlayerPredicate<ObjectSourcePlayer<StackObject>> {
+class PsychicRebuttalPredicate implements ObjectSourcePlayerPredicate<StackObject> {
 
     @Override
     public boolean apply(ObjectSourcePlayer<StackObject> input, Game game) {
diff --git a/Mage.Sets/src/mage/cards/p/Pyramids.java b/Mage.Sets/src/mage/cards/p/Pyramids.java
index 8f14c63786..297ab08af3 100644
--- a/Mage.Sets/src/mage/cards/p/Pyramids.java
+++ b/Mage.Sets/src/mage/cards/p/Pyramids.java
@@ -60,7 +60,7 @@ public final class Pyramids extends CardImpl {
         return new Pyramids(this);
     }
 }
-class PyramidsPredicate implements ObjectSourcePlayerPredicate<ObjectSourcePlayer<Permanent>> {
+class PyramidsPredicate implements ObjectSourcePlayerPredicate<Permanent> {
     @Override
     public boolean apply(ObjectSourcePlayer<Permanent> input, Game game) {
         Permanent attachment = input.getObject();
diff --git a/Mage.Sets/src/mage/cards/r/Radiate.java b/Mage.Sets/src/mage/cards/r/Radiate.java
index ad83f12348..5e8eeabc69 100644
--- a/Mage.Sets/src/mage/cards/r/Radiate.java
+++ b/Mage.Sets/src/mage/cards/r/Radiate.java
@@ -55,7 +55,7 @@ public final class Radiate extends CardImpl {
     }
 }
 
-enum SpellWithOnlySingleTargetPredicate implements ObjectSourcePlayerPredicate<ObjectSourcePlayer<Spell>> {
+enum SpellWithOnlySingleTargetPredicate implements ObjectSourcePlayerPredicate<Spell> {
     instance;
 
     @Override
@@ -79,7 +79,7 @@ enum SpellWithOnlySingleTargetPredicate implements ObjectSourcePlayerPredicate<O
     }
 }
 
-enum SpellWithOnlyPermanentOrPlayerTargetsPredicate implements ObjectSourcePlayerPredicate<ObjectSourcePlayer<Spell>> {
+enum SpellWithOnlyPermanentOrPlayerTargetsPredicate implements ObjectSourcePlayerPredicate<Spell> {
     instance;
 
     @Override
diff --git a/Mage.Sets/src/mage/cards/r/RebbecArchitectOfAscension.java b/Mage.Sets/src/mage/cards/r/RebbecArchitectOfAscension.java
index 1720c48f8c..e5f023a7ba 100644
--- a/Mage.Sets/src/mage/cards/r/RebbecArchitectOfAscension.java
+++ b/Mage.Sets/src/mage/cards/r/RebbecArchitectOfAscension.java
@@ -62,7 +62,7 @@ public final class RebbecArchitectOfAscension extends CardImpl {
     }
 }
 
-enum RebbecArchitectOfAscensionPredicate implements ObjectSourcePlayerPredicate<ObjectSourcePlayer<MageObject>> {
+enum RebbecArchitectOfAscensionPredicate implements ObjectSourcePlayerPredicate<MageObject> {
     instance;
 
     @Override
diff --git a/Mage.Sets/src/mage/cards/r/RemoveEnchantments.java b/Mage.Sets/src/mage/cards/r/RemoveEnchantments.java
index 991a19f7d9..6a345bfdba 100644
--- a/Mage.Sets/src/mage/cards/r/RemoveEnchantments.java
+++ b/Mage.Sets/src/mage/cards/r/RemoveEnchantments.java
@@ -74,7 +74,7 @@ public final class RemoveEnchantments extends CardImpl {
     }
 }
 
-class AttachedToOpponentControlledAttackingCreaturePredicate implements ObjectSourcePlayerPredicate<ObjectSourcePlayer<Permanent>> {
+class AttachedToOpponentControlledAttackingCreaturePredicate implements ObjectSourcePlayerPredicate<Permanent> {
 
     @Override
     public boolean apply(ObjectSourcePlayer<Permanent> input, Game game) {
diff --git a/Mage.Sets/src/mage/cards/r/Ricochet.java b/Mage.Sets/src/mage/cards/r/Ricochet.java
index 99f3b66f71..029f4e5d19 100644
--- a/Mage.Sets/src/mage/cards/r/Ricochet.java
+++ b/Mage.Sets/src/mage/cards/r/Ricochet.java
@@ -57,7 +57,7 @@ public final class Ricochet extends CardImpl {
     }
 }
 
-class SpellWithOnlyPlayerTargetsPredicate implements ObjectSourcePlayerPredicate<ObjectSourcePlayer<Spell>> {
+class SpellWithOnlyPlayerTargetsPredicate implements ObjectSourcePlayerPredicate<Spell> {
 
     @Override
     public boolean apply(ObjectSourcePlayer<Spell> input, Game game) {
diff --git a/Mage.Sets/src/mage/cards/s/SageOfTheBeyond.java b/Mage.Sets/src/mage/cards/s/SageOfTheBeyond.java
index 0f3de5243b..4317d671c3 100644
--- a/Mage.Sets/src/mage/cards/s/SageOfTheBeyond.java
+++ b/Mage.Sets/src/mage/cards/s/SageOfTheBeyond.java
@@ -59,7 +59,7 @@ public final class SageOfTheBeyond extends CardImpl {
     }
 }
 
-enum SageOfTheBeyondPredicate implements ObjectSourcePlayerPredicate<ObjectSourcePlayer<Card>> {
+enum SageOfTheBeyondPredicate implements ObjectSourcePlayerPredicate<Card> {
     instance;
 
     @Override
diff --git a/Mage.Sets/src/mage/cards/s/SalvageTrader.java b/Mage.Sets/src/mage/cards/s/SalvageTrader.java
index 76e21c7352..eb31a44a3e 100644
--- a/Mage.Sets/src/mage/cards/s/SalvageTrader.java
+++ b/Mage.Sets/src/mage/cards/s/SalvageTrader.java
@@ -57,7 +57,7 @@ public final class SalvageTrader extends CardImpl {
     }
 }
 
-class SameCastingCostPredicate implements ObjectSourcePlayerPredicate<ObjectSourcePlayer<MageItem>> {
+class SameCastingCostPredicate implements ObjectSourcePlayerPredicate<MageItem> {
 
     @Override
     public boolean apply(ObjectSourcePlayer<MageItem> input, Game game) {
diff --git a/Mage.Sets/src/mage/cards/s/SavaenElves.java b/Mage.Sets/src/mage/cards/s/SavaenElves.java
index bc2837ff4e..5b0d87ac76 100644
--- a/Mage.Sets/src/mage/cards/s/SavaenElves.java
+++ b/Mage.Sets/src/mage/cards/s/SavaenElves.java
@@ -59,7 +59,7 @@ public final class SavaenElves extends CardImpl {
     }
 }
 
-class SavaenElvesPredicate implements ObjectSourcePlayerPredicate<ObjectSourcePlayer<Permanent>> {
+class SavaenElvesPredicate implements ObjectSourcePlayerPredicate<Permanent> {
     @Override
     public boolean apply(ObjectSourcePlayer<Permanent> input, Game game) {
         Permanent attachment = input.getObject();
diff --git a/Mage.Sets/src/mage/cards/s/ShacklesOfTreachery.java b/Mage.Sets/src/mage/cards/s/ShacklesOfTreachery.java
index 12af6a0c8b..06667a4997 100644
--- a/Mage.Sets/src/mage/cards/s/ShacklesOfTreachery.java
+++ b/Mage.Sets/src/mage/cards/s/ShacklesOfTreachery.java
@@ -56,7 +56,7 @@ public final class ShacklesOfTreachery extends CardImpl {
 
 class ShacklesOfTreacheryTriggeredAbility extends TriggeredAbilityImpl {
 
-    private enum ShacklesOfTreacheryPredicate implements ObjectSourcePlayerPredicate<ObjectSourcePlayer<MageObject>> {
+    private enum ShacklesOfTreacheryPredicate implements ObjectSourcePlayerPredicate<MageObject> {
         instance;
 
         @Override
diff --git a/Mage.Sets/src/mage/cards/s/ShellOfTheLastKappa.java b/Mage.Sets/src/mage/cards/s/ShellOfTheLastKappa.java
index 34809f201a..1eade2f043 100644
--- a/Mage.Sets/src/mage/cards/s/ShellOfTheLastKappa.java
+++ b/Mage.Sets/src/mage/cards/s/ShellOfTheLastKappa.java
@@ -156,7 +156,7 @@ class ShellOfTheLastKappaCastEffect extends OneShotEffect {
     }
 }
 
-class TargetYouPredicate implements ObjectSourcePlayerPredicate<ObjectSourcePlayer<StackObject>> {
+class TargetYouPredicate implements ObjectSourcePlayerPredicate<StackObject> {
 
     @Override
     public boolean apply(ObjectSourcePlayer<StackObject> input, Game game) {
diff --git a/Mage.Sets/src/mage/cards/s/SilverWyvern.java b/Mage.Sets/src/mage/cards/s/SilverWyvern.java
index 1a01717a61..b1b0e8d21e 100644
--- a/Mage.Sets/src/mage/cards/s/SilverWyvern.java
+++ b/Mage.Sets/src/mage/cards/s/SilverWyvern.java
@@ -66,7 +66,7 @@ public final class SilverWyvern extends CardImpl {
     }
 }
 
-enum SilverWyvernPredicate implements ObjectSourcePlayerPredicate<ObjectSourcePlayer<StackObject>> {
+enum SilverWyvernPredicate implements ObjectSourcePlayerPredicate<StackObject> {
     instance;
 
     @Override
diff --git a/Mage.Sets/src/mage/cards/s/SilverquillSilencer.java b/Mage.Sets/src/mage/cards/s/SilverquillSilencer.java
index 8ea5ef8ed9..fba59f6c3a 100644
--- a/Mage.Sets/src/mage/cards/s/SilverquillSilencer.java
+++ b/Mage.Sets/src/mage/cards/s/SilverquillSilencer.java
@@ -65,7 +65,7 @@ public final class SilverquillSilencer extends CardImpl {
     }
 }
 
-enum SilverquillSilencerPredicate implements ObjectSourcePlayerPredicate<ObjectSourcePlayer<MageObject>> {
+enum SilverquillSilencerPredicate implements ObjectSourcePlayerPredicate<MageObject> {
     instance;
 
     @Override
diff --git a/Mage.Sets/src/mage/cards/s/SimicGuildmage.java b/Mage.Sets/src/mage/cards/s/SimicGuildmage.java
index 06cd89b612..aaa757e928 100644
--- a/Mage.Sets/src/mage/cards/s/SimicGuildmage.java
+++ b/Mage.Sets/src/mage/cards/s/SimicGuildmage.java
@@ -120,7 +120,7 @@ class MoveCounterFromTargetToTargetEffect extends OneShotEffect {
     }
 }
 
-class SameControllerPredicate implements ObjectSourcePlayerPredicate<ObjectSourcePlayer<MageItem>> {
+class SameControllerPredicate implements ObjectSourcePlayerPredicate<MageItem> {
 
     @Override
     public boolean apply(ObjectSourcePlayer<MageItem> input, Game game) {
diff --git a/Mage.Sets/src/mage/cards/s/SkullportMerchant.java b/Mage.Sets/src/mage/cards/s/SkullportMerchant.java
index 077336654e..33aea4c880 100644
--- a/Mage.Sets/src/mage/cards/s/SkullportMerchant.java
+++ b/Mage.Sets/src/mage/cards/s/SkullportMerchant.java
@@ -60,7 +60,7 @@ public final class SkullportMerchant extends CardImpl {
     }
 }
 
-enum SkullportMerchantPredicate implements ObjectSourcePlayerPredicate<ObjectSourcePlayer<MageObject>> {
+enum SkullportMerchantPredicate implements ObjectSourcePlayerPredicate<MageObject> {
     instance;
 
     @Override
diff --git a/Mage.Sets/src/mage/cards/s/SoulShatter.java b/Mage.Sets/src/mage/cards/s/SoulShatter.java
index cdb4429db0..b690afb338 100644
--- a/Mage.Sets/src/mage/cards/s/SoulShatter.java
+++ b/Mage.Sets/src/mage/cards/s/SoulShatter.java
@@ -47,7 +47,7 @@ public final class SoulShatter extends CardImpl {
     }
 }
 
-enum SoulShatterPredicate implements ObjectSourcePlayerPredicate<ObjectSourcePlayer<Permanent>> {
+enum SoulShatterPredicate implements ObjectSourcePlayerPredicate<Permanent> {
     instance;
 
     private static final FilterPermanent filter = new FilterCreatureOrPlaneswalkerPermanent();
diff --git a/Mage.Sets/src/mage/cards/s/SpectralDeluge.java b/Mage.Sets/src/mage/cards/s/SpectralDeluge.java
index be30c1e182..5bc96cc27d 100644
--- a/Mage.Sets/src/mage/cards/s/SpectralDeluge.java
+++ b/Mage.Sets/src/mage/cards/s/SpectralDeluge.java
@@ -50,7 +50,7 @@ public final class SpectralDeluge extends CardImpl {
     }
 }
 
-enum SpectralDelugePredicate implements ObjectSourcePlayerPredicate<ObjectSourcePlayer<MageObject>> {
+enum SpectralDelugePredicate implements ObjectSourcePlayerPredicate<MageObject> {
     instance;
     private static final FilterPermanent filter = new FilterControlledPermanent(SubType.ISLAND);
 
diff --git a/Mage.Sets/src/mage/cards/s/SpellstutterSprite.java b/Mage.Sets/src/mage/cards/s/SpellstutterSprite.java
index ad378de75b..0f6f0719e1 100644
--- a/Mage.Sets/src/mage/cards/s/SpellstutterSprite.java
+++ b/Mage.Sets/src/mage/cards/s/SpellstutterSprite.java
@@ -62,7 +62,7 @@ public final class SpellstutterSprite extends CardImpl {
     }
 }
 
-enum SpellstutterSpritePredicate implements ObjectSourcePlayerPredicate<ObjectSourcePlayer<MageObject>> {
+enum SpellstutterSpritePredicate implements ObjectSourcePlayerPredicate<MageObject> {
     instance;
     private static final FilterPermanent filter = new FilterPermanent();
 
diff --git a/Mage.Sets/src/mage/cards/s/StumpsquallHydra.java b/Mage.Sets/src/mage/cards/s/StumpsquallHydra.java
index 110ae1ffab..e59c1c4e8b 100644
--- a/Mage.Sets/src/mage/cards/s/StumpsquallHydra.java
+++ b/Mage.Sets/src/mage/cards/s/StumpsquallHydra.java
@@ -59,7 +59,7 @@ class StumpsquallHydraEffect extends OneShotEffect {
         filter.add(StumpsquallHydraPredicate.instance);
     }
 
-    private enum StumpsquallHydraPredicate implements ObjectSourcePlayerPredicate<ObjectSourcePlayer<MageObject>> {
+    private enum StumpsquallHydraPredicate implements ObjectSourcePlayerPredicate<MageObject> {
         instance;
 
         @Override
diff --git a/Mage.Sets/src/mage/cards/t/TelimTorsEdict.java b/Mage.Sets/src/mage/cards/t/TelimTorsEdict.java
index c4145bdbeb..c4f27760e7 100644
--- a/Mage.Sets/src/mage/cards/t/TelimTorsEdict.java
+++ b/Mage.Sets/src/mage/cards/t/TelimTorsEdict.java
@@ -49,7 +49,7 @@ public final class TelimTorsEdict extends CardImpl {
     }
 }
 
-class TelimTorsEdictPredicate implements ObjectSourcePlayerPredicate<ObjectSourcePlayer<Permanent>> {
+class TelimTorsEdictPredicate implements ObjectSourcePlayerPredicate<Permanent> {
 
     public TelimTorsEdictPredicate() {
     }
diff --git a/Mage.Sets/src/mage/cards/t/ThunderkinAwakener.java b/Mage.Sets/src/mage/cards/t/ThunderkinAwakener.java
index a340a43b28..e8d3a109fe 100644
--- a/Mage.Sets/src/mage/cards/t/ThunderkinAwakener.java
+++ b/Mage.Sets/src/mage/cards/t/ThunderkinAwakener.java
@@ -70,7 +70,7 @@ public final class ThunderkinAwakener extends CardImpl {
     }
 }
 
-enum ThunderkinAwakenerPredicate implements ObjectSourcePlayerPredicate<ObjectSourcePlayer<Card>> {
+enum ThunderkinAwakenerPredicate implements ObjectSourcePlayerPredicate<Card> {
     instance;
 
     @Override
diff --git a/Mage.Sets/src/mage/cards/t/Torchling.java b/Mage.Sets/src/mage/cards/t/Torchling.java
index 3c3c1b0cfb..53a094e7b1 100644
--- a/Mage.Sets/src/mage/cards/t/Torchling.java
+++ b/Mage.Sets/src/mage/cards/t/Torchling.java
@@ -83,7 +83,7 @@ public final class Torchling extends CardImpl {
     }
 }
 
-enum TorchlingPredicate implements ObjectSourcePlayerPredicate<ObjectSourcePlayer<StackObject>> {
+enum TorchlingPredicate implements ObjectSourcePlayerPredicate<StackObject> {
 
     instance;
 
diff --git a/Mage.Sets/src/mage/cards/t/TravelersCloak.java b/Mage.Sets/src/mage/cards/t/TravelersCloak.java
index afeaf1e4d0..230c7c3456 100644
--- a/Mage.Sets/src/mage/cards/t/TravelersCloak.java
+++ b/Mage.Sets/src/mage/cards/t/TravelersCloak.java
@@ -86,7 +86,7 @@ class TravelersCloakGainAbilityAttachedEffect extends GainAbilityAttachedEffect
     }
 }
 
-enum TravelersCloakChosenSubtypePredicate implements ObjectSourcePlayerPredicate<ObjectSourcePlayer<MageObject>> {
+enum TravelersCloakChosenSubtypePredicate implements ObjectSourcePlayerPredicate<MageObject> {
     instance;
 
     @Override
diff --git a/Mage.Sets/src/mage/cards/u/UnlivingPsychopath.java b/Mage.Sets/src/mage/cards/u/UnlivingPsychopath.java
index 1fde042523..490dc55e22 100644
--- a/Mage.Sets/src/mage/cards/u/UnlivingPsychopath.java
+++ b/Mage.Sets/src/mage/cards/u/UnlivingPsychopath.java
@@ -63,7 +63,7 @@ public final class UnlivingPsychopath extends CardImpl {
     }
 }
 
-class UnlivingPsychopathPowerLessThanSourcePredicate implements ObjectSourcePlayerPredicate<ObjectSourcePlayer<Permanent>> {
+class UnlivingPsychopathPowerLessThanSourcePredicate implements ObjectSourcePlayerPredicate<Permanent> {
 
     @Override
     public boolean apply(ObjectSourcePlayer<Permanent> input, Game game) {
diff --git a/Mage.Sets/src/mage/cards/v/VedalkenShackles.java b/Mage.Sets/src/mage/cards/v/VedalkenShackles.java
index 2049a07822..2c6adc7e20 100644
--- a/Mage.Sets/src/mage/cards/v/VedalkenShackles.java
+++ b/Mage.Sets/src/mage/cards/v/VedalkenShackles.java
@@ -62,7 +62,7 @@ public final class VedalkenShackles extends CardImpl {
     }
 }
 
-class PowerIslandPredicate implements ObjectSourcePlayerPredicate<ObjectSourcePlayer<Permanent>> {
+class PowerIslandPredicate implements ObjectSourcePlayerPredicate<Permanent> {
 
     static final FilterLandPermanent filter = new FilterLandPermanent("Island");
     static {
diff --git a/Mage.Sets/src/mage/cards/v/VineGecko.java b/Mage.Sets/src/mage/cards/v/VineGecko.java
index fbdf500606..420e3b3719 100644
--- a/Mage.Sets/src/mage/cards/v/VineGecko.java
+++ b/Mage.Sets/src/mage/cards/v/VineGecko.java
@@ -67,7 +67,7 @@ public final class VineGecko extends CardImpl {
     }
 }
 
-enum VineGeckoPredicate implements ObjectSourcePlayerPredicate<ObjectSourcePlayer<Card>> {
+enum VineGeckoPredicate implements ObjectSourcePlayerPredicate<Card> {
     instance;
 
     @Override
diff --git a/Mage.Sets/src/mage/cards/w/WickedAkuba.java b/Mage.Sets/src/mage/cards/w/WickedAkuba.java
index da754eaa40..3f601af77f 100644
--- a/Mage.Sets/src/mage/cards/w/WickedAkuba.java
+++ b/Mage.Sets/src/mage/cards/w/WickedAkuba.java
@@ -56,7 +56,7 @@ public final class WickedAkuba extends CardImpl {
     }
 }
 
-class WickedAkubaPredicate implements ObjectSourcePlayerPredicate<ObjectSourcePlayer<Player>> {
+class WickedAkubaPredicate implements ObjectSourcePlayerPredicate<Player> {
 
     @Override
     public boolean apply(ObjectSourcePlayer<Player> input, Game game) {
diff --git a/Mage.Sets/src/mage/cards/y/YasovaDragonclaw.java b/Mage.Sets/src/mage/cards/y/YasovaDragonclaw.java
index 70a555f694..13fd40aa40 100644
--- a/Mage.Sets/src/mage/cards/y/YasovaDragonclaw.java
+++ b/Mage.Sets/src/mage/cards/y/YasovaDragonclaw.java
@@ -71,7 +71,7 @@ public final class YasovaDragonclaw extends CardImpl {
     }
 }
 
-class YasovaDragonclawPowerLessThanSourcePredicate implements ObjectSourcePlayerPredicate<ObjectSourcePlayer<Permanent>> {
+class YasovaDragonclawPowerLessThanSourcePredicate implements ObjectSourcePlayerPredicate<Permanent> {
 
     @Override
     public boolean apply(ObjectSourcePlayer<Permanent> input, Game game) {
diff --git a/Mage/src/main/java/mage/abilities/keyword/MentorAbility.java b/Mage/src/main/java/mage/abilities/keyword/MentorAbility.java
index e7fbee0fb7..6cfe91e6e9 100644
--- a/Mage/src/main/java/mage/abilities/keyword/MentorAbility.java
+++ b/Mage/src/main/java/mage/abilities/keyword/MentorAbility.java
@@ -45,7 +45,7 @@ public class MentorAbility extends AttacksTriggeredAbility {
 
 }
 
-enum MentorAbilityPredicate implements ObjectSourcePlayerPredicate<ObjectSourcePlayer<Card>> {
+enum MentorAbilityPredicate implements ObjectSourcePlayerPredicate<Card> {
     instance;
 
     @Override
diff --git a/Mage/src/main/java/mage/constants/TargetController.java b/Mage/src/main/java/mage/constants/TargetController.java
index 7bdfac067b..a81c3610c8 100644
--- a/Mage/src/main/java/mage/constants/TargetController.java
+++ b/Mage/src/main/java/mage/constants/TargetController.java
@@ -50,7 +50,7 @@ public enum TargetController {
         return controllerPredicate;
     }
 
-    public static class OwnerPredicate implements ObjectSourcePlayerPredicate<ObjectSourcePlayer<Card>> {
+    public static class OwnerPredicate implements ObjectSourcePlayerPredicate<Card> {
 
         private final TargetController targetOwner;
 
@@ -99,7 +99,7 @@ public enum TargetController {
         }
     }
 
-    public static class PlayerPredicate implements ObjectSourcePlayerPredicate<ObjectSourcePlayer<Player>> {
+    public static class PlayerPredicate implements ObjectSourcePlayerPredicate<Player> {
 
         private final TargetController targetPlayer;
 
@@ -143,7 +143,7 @@ public enum TargetController {
         }
     }
 
-    public static class ControllerPredicate implements ObjectSourcePlayerPredicate<ObjectSourcePlayer<Controllable>> {
+    public static class ControllerPredicate implements ObjectSourcePlayerPredicate<Controllable> {
 
         private final TargetController controller;
 
diff --git a/Mage/src/main/java/mage/filter/FilterCard.java b/Mage/src/main/java/mage/filter/FilterCard.java
index 331558337d..bae5bcd3de 100644
--- a/Mage/src/main/java/mage/filter/FilterCard.java
+++ b/Mage/src/main/java/mage/filter/FilterCard.java
@@ -23,7 +23,7 @@ import java.util.stream.Collectors;
 public class FilterCard extends FilterObject<Card> {
 
     private static final long serialVersionUID = 1L;
-    protected List<ObjectSourcePlayerPredicate<ObjectSourcePlayer<Card>>> extraPredicates = new ArrayList<>();
+    protected List<ObjectSourcePlayerPredicate<Card>> extraPredicates = new ArrayList<>();
 
     public FilterCard() {
         super("card");
diff --git a/Mage/src/main/java/mage/filter/FilterPermanent.java b/Mage/src/main/java/mage/filter/FilterPermanent.java
index 02248373d5..fa995d8a7d 100644
--- a/Mage/src/main/java/mage/filter/FilterPermanent.java
+++ b/Mage/src/main/java/mage/filter/FilterPermanent.java
@@ -3,7 +3,6 @@ package mage.filter;
 import mage.constants.SubType;
 import mage.filter.predicate.ObjectSourcePlayer;
 import mage.filter.predicate.ObjectSourcePlayerPredicate;
-import mage.filter.predicate.ObjectSourcePlayer;
 import mage.filter.predicate.Predicates;
 import mage.game.Game;
 import mage.game.permanent.Permanent;
@@ -18,7 +17,7 @@ import java.util.UUID;
  */
 public class FilterPermanent extends FilterObject<Permanent> implements FilterInPlay<Permanent> {
 
-    protected List<ObjectSourcePlayerPredicate<ObjectSourcePlayer<Permanent>>> extraPredicates = new ArrayList<>();
+    protected List<ObjectSourcePlayerPredicate<Permanent>> extraPredicates = new ArrayList<>();
 
     public FilterPermanent() {
         super("permanent");
diff --git a/Mage/src/main/java/mage/filter/FilterPlayer.java b/Mage/src/main/java/mage/filter/FilterPlayer.java
index d01aa89994..7a4e0c726e 100644
--- a/Mage/src/main/java/mage/filter/FilterPlayer.java
+++ b/Mage/src/main/java/mage/filter/FilterPlayer.java
@@ -16,7 +16,7 @@ import java.util.UUID;
  */
 public class FilterPlayer extends FilterImpl<Player> {
 
-    protected List<ObjectSourcePlayerPredicate<ObjectSourcePlayer<Player>>> extraPredicates = new ArrayList<>();
+    protected List<ObjectSourcePlayerPredicate<Player>> extraPredicates = new ArrayList<>();
 
     public FilterPlayer() {
         this("player");
diff --git a/Mage/src/main/java/mage/filter/FilterStackObject.java b/Mage/src/main/java/mage/filter/FilterStackObject.java
index d3c38ecd33..f6099773dd 100644
--- a/Mage/src/main/java/mage/filter/FilterStackObject.java
+++ b/Mage/src/main/java/mage/filter/FilterStackObject.java
@@ -2,10 +2,8 @@ package mage.filter;
 
 import mage.filter.predicate.ObjectSourcePlayer;
 import mage.filter.predicate.ObjectSourcePlayerPredicate;
-import mage.filter.predicate.ObjectSourcePlayer;
 import mage.filter.predicate.Predicates;
 import mage.game.Game;
-import mage.game.permanent.Permanent;
 import mage.game.stack.StackObject;
 
 import java.util.ArrayList;
@@ -17,7 +15,7 @@ import java.util.UUID;
  */
 public class FilterStackObject extends FilterObject<StackObject> {
 
-    protected List<ObjectSourcePlayerPredicate<ObjectSourcePlayer<StackObject>>> extraPredicates = new ArrayList<>();
+    protected List<ObjectSourcePlayerPredicate<StackObject>> extraPredicates = new ArrayList<>();
 
     public FilterStackObject() {
         this("spell or ability");
diff --git a/Mage/src/main/java/mage/filter/common/FilterPermanentOrPlayer.java b/Mage/src/main/java/mage/filter/common/FilterPermanentOrPlayer.java
index f6fc17d248..b6b6d18be1 100644
--- a/Mage/src/main/java/mage/filter/common/FilterPermanentOrPlayer.java
+++ b/Mage/src/main/java/mage/filter/common/FilterPermanentOrPlayer.java
@@ -5,7 +5,6 @@ import mage.filter.FilterImpl;
 import mage.filter.FilterInPlay;
 import mage.filter.FilterPermanent;
 import mage.filter.FilterPlayer;
-import mage.filter.predicate.ObjectSourcePlayer;
 import mage.filter.predicate.ObjectSourcePlayerPredicate;
 import mage.filter.predicate.Predicate;
 import mage.game.Game;
diff --git a/Mage/src/main/java/mage/filter/predicate/ObjectSourcePlayerPredicate.java b/Mage/src/main/java/mage/filter/predicate/ObjectSourcePlayerPredicate.java
index 73b3679062..bd451e1112 100644
--- a/Mage/src/main/java/mage/filter/predicate/ObjectSourcePlayerPredicate.java
+++ b/Mage/src/main/java/mage/filter/predicate/ObjectSourcePlayerPredicate.java
@@ -5,5 +5,5 @@ package mage.filter.predicate;
  * @author North
  */
 @FunctionalInterface
-public interface ObjectSourcePlayerPredicate<T extends ObjectSourcePlayer<?>> extends Predicate<T> {
+public interface ObjectSourcePlayerPredicate<T> extends Predicate<ObjectSourcePlayer<T>> {
 }
diff --git a/Mage/src/main/java/mage/filter/predicate/card/CardOnTopOfLibraryPredicate.java b/Mage/src/main/java/mage/filter/predicate/card/CardOnTopOfLibraryPredicate.java
index 46661a3d88..a39ce5110b 100644
--- a/Mage/src/main/java/mage/filter/predicate/card/CardOnTopOfLibraryPredicate.java
+++ b/Mage/src/main/java/mage/filter/predicate/card/CardOnTopOfLibraryPredicate.java
@@ -10,7 +10,7 @@ import mage.players.Player;
  * @author JayDi85
  */
 
-public enum CardOnTopOfLibraryPredicate implements ObjectSourcePlayerPredicate<ObjectSourcePlayer<Card>> {
+public enum CardOnTopOfLibraryPredicate implements ObjectSourcePlayerPredicate<Card> {
     YOUR,
     ANY;
 
diff --git a/Mage/src/main/java/mage/filter/predicate/card/DefendingPlayerOwnsCardPredicate.java b/Mage/src/main/java/mage/filter/predicate/card/DefendingPlayerOwnsCardPredicate.java
index a667d02abd..a863a65c2f 100644
--- a/Mage/src/main/java/mage/filter/predicate/card/DefendingPlayerOwnsCardPredicate.java
+++ b/Mage/src/main/java/mage/filter/predicate/card/DefendingPlayerOwnsCardPredicate.java
@@ -8,7 +8,7 @@ import mage.game.Game;
 /**
  * @author TheElk801
  */
-public enum DefendingPlayerOwnsCardPredicate implements ObjectSourcePlayerPredicate<ObjectSourcePlayer<Card>> {
+public enum DefendingPlayerOwnsCardPredicate implements ObjectSourcePlayerPredicate<Card> {
     instance;
 
     @Override
diff --git a/Mage/src/main/java/mage/filter/predicate/mageobject/AnotherCardPredicate.java b/Mage/src/main/java/mage/filter/predicate/mageobject/AnotherCardPredicate.java
index 39f3d86867..6bc62682bc 100644
--- a/Mage/src/main/java/mage/filter/predicate/mageobject/AnotherCardPredicate.java
+++ b/Mage/src/main/java/mage/filter/predicate/mageobject/AnotherCardPredicate.java
@@ -10,7 +10,7 @@ import mage.game.Game;
  *
  * @author North
  */
-public class AnotherCardPredicate implements ObjectSourcePlayerPredicate<ObjectSourcePlayer<MageObject>> {
+public class AnotherCardPredicate implements ObjectSourcePlayerPredicate<MageObject> {
 
     @Override
     public boolean apply(ObjectSourcePlayer<MageObject> input, Game game) {
diff --git a/Mage/src/main/java/mage/filter/predicate/mageobject/AnotherPredicate.java b/Mage/src/main/java/mage/filter/predicate/mageobject/AnotherPredicate.java
index 1c104eb326..a7ce454808 100644
--- a/Mage/src/main/java/mage/filter/predicate/mageobject/AnotherPredicate.java
+++ b/Mage/src/main/java/mage/filter/predicate/mageobject/AnotherPredicate.java
@@ -9,7 +9,7 @@ import mage.game.Game;
 /**
  * @author North
  */
-public enum AnotherPredicate implements ObjectSourcePlayerPredicate<ObjectSourcePlayer<MageObject>> {
+public enum AnotherPredicate implements ObjectSourcePlayerPredicate<MageObject> {
     instance;
 
     @Override
diff --git a/Mage/src/main/java/mage/filter/predicate/mageobject/ChosenColorPredicate.java b/Mage/src/main/java/mage/filter/predicate/mageobject/ChosenColorPredicate.java
index 77a920369f..e0575ae97c 100644
--- a/Mage/src/main/java/mage/filter/predicate/mageobject/ChosenColorPredicate.java
+++ b/Mage/src/main/java/mage/filter/predicate/mageobject/ChosenColorPredicate.java
@@ -9,7 +9,7 @@ import mage.game.Game;
 /**
  * @author TheElk801
  */
-public enum ChosenColorPredicate implements ObjectSourcePlayerPredicate<ObjectSourcePlayer<MageObject>> {
+public enum ChosenColorPredicate implements ObjectSourcePlayerPredicate<MageObject> {
     TRUE(true), FALSE(false);
 
     private final boolean value;
diff --git a/Mage/src/main/java/mage/filter/predicate/mageobject/ChosenSubtypePredicate.java b/Mage/src/main/java/mage/filter/predicate/mageobject/ChosenSubtypePredicate.java
index ed2cdb4cca..1ac3570785 100644
--- a/Mage/src/main/java/mage/filter/predicate/mageobject/ChosenSubtypePredicate.java
+++ b/Mage/src/main/java/mage/filter/predicate/mageobject/ChosenSubtypePredicate.java
@@ -13,7 +13,7 @@ import mage.game.Game;
  *
  * @author LoneFox
  */
-public enum ChosenSubtypePredicate implements ObjectSourcePlayerPredicate<ObjectSourcePlayer<MageObject>> {
+public enum ChosenSubtypePredicate implements ObjectSourcePlayerPredicate<MageObject> {
     TRUE(true), FALSE(false);
 
     private final boolean value;
diff --git a/Mage/src/main/java/mage/filter/predicate/mageobject/SharesColorWithSourcePredicate.java b/Mage/src/main/java/mage/filter/predicate/mageobject/SharesColorWithSourcePredicate.java
index 56f38b0d62..3beae46614 100644
--- a/Mage/src/main/java/mage/filter/predicate/mageobject/SharesColorWithSourcePredicate.java
+++ b/Mage/src/main/java/mage/filter/predicate/mageobject/SharesColorWithSourcePredicate.java
@@ -10,7 +10,7 @@ import mage.game.Game;
  * @author LevelX2
  */
 
-public class SharesColorWithSourcePredicate implements ObjectSourcePlayerPredicate<ObjectSourcePlayer<MageObject>> {
+public class SharesColorWithSourcePredicate implements ObjectSourcePlayerPredicate<MageObject> {
 
     @Override
     public boolean apply(ObjectSourcePlayer<MageObject> input, Game game) {
diff --git a/Mage/src/main/java/mage/filter/predicate/mageobject/TargetsOnlyOnePlayerPredicate.java b/Mage/src/main/java/mage/filter/predicate/mageobject/TargetsOnlyOnePlayerPredicate.java
index 5510e927ea..98eea077fd 100644
--- a/Mage/src/main/java/mage/filter/predicate/mageobject/TargetsOnlyOnePlayerPredicate.java
+++ b/Mage/src/main/java/mage/filter/predicate/mageobject/TargetsOnlyOnePlayerPredicate.java
@@ -14,7 +14,7 @@ import mage.target.Target;
  *
  * @author jeffwadsworth
  */
-public class TargetsOnlyOnePlayerPredicate implements ObjectSourcePlayerPredicate<ObjectSourcePlayer<MageObject>> {
+public class TargetsOnlyOnePlayerPredicate implements ObjectSourcePlayerPredicate<MageObject> {
 
     public TargetsOnlyOnePlayerPredicate() {
     }
diff --git a/Mage/src/main/java/mage/filter/predicate/mageobject/TargetsPermanentPredicate.java b/Mage/src/main/java/mage/filter/predicate/mageobject/TargetsPermanentPredicate.java
index fd16aea94b..ccb8adea32 100644
--- a/Mage/src/main/java/mage/filter/predicate/mageobject/TargetsPermanentPredicate.java
+++ b/Mage/src/main/java/mage/filter/predicate/mageobject/TargetsPermanentPredicate.java
@@ -15,7 +15,7 @@ import java.util.UUID;
 /**
  * @author LoneFox
  */
-public class TargetsPermanentPredicate implements ObjectSourcePlayerPredicate<ObjectSourcePlayer<MageObject>> {
+public class TargetsPermanentPredicate implements ObjectSourcePlayerPredicate<MageObject> {
 
     private final FilterPermanent targetFilter;
 
diff --git a/Mage/src/main/java/mage/filter/predicate/mageobject/TargetsPlayerPredicate.java b/Mage/src/main/java/mage/filter/predicate/mageobject/TargetsPlayerPredicate.java
index e7bf4fe8a1..d5af2774f4 100644
--- a/Mage/src/main/java/mage/filter/predicate/mageobject/TargetsPlayerPredicate.java
+++ b/Mage/src/main/java/mage/filter/predicate/mageobject/TargetsPlayerPredicate.java
@@ -14,7 +14,7 @@ import mage.target.Target;
  *
  * @author jeffwadsworth
  */
-public class TargetsPlayerPredicate implements ObjectSourcePlayerPredicate<ObjectSourcePlayer<MageObject>> {
+public class TargetsPlayerPredicate implements ObjectSourcePlayerPredicate<MageObject> {
 
     public TargetsPlayerPredicate() {
     }
diff --git a/Mage/src/main/java/mage/filter/predicate/other/AnotherTargetPredicate.java b/Mage/src/main/java/mage/filter/predicate/other/AnotherTargetPredicate.java
index 5383ed5731..5ab2b2f8c4 100644
--- a/Mage/src/main/java/mage/filter/predicate/other/AnotherTargetPredicate.java
+++ b/Mage/src/main/java/mage/filter/predicate/other/AnotherTargetPredicate.java
@@ -18,7 +18,7 @@ import mage.target.Target;
  *
  * @author LevelX2
  */
-public class AnotherTargetPredicate implements ObjectSourcePlayerPredicate<ObjectSourcePlayer<MageItem>> {
+public class AnotherTargetPredicate implements ObjectSourcePlayerPredicate<MageItem> {
 
     private final int targetTag;
     private final boolean crossModalCheck;
diff --git a/Mage/src/main/java/mage/filter/predicate/other/DamagedPlayerThisTurnPredicate.java b/Mage/src/main/java/mage/filter/predicate/other/DamagedPlayerThisTurnPredicate.java
index a7935bd77c..4f3392da66 100644
--- a/Mage/src/main/java/mage/filter/predicate/other/DamagedPlayerThisTurnPredicate.java
+++ b/Mage/src/main/java/mage/filter/predicate/other/DamagedPlayerThisTurnPredicate.java
@@ -12,7 +12,7 @@ import java.util.UUID;
 /**
  * @author LevelX2
  */
-public class DamagedPlayerThisTurnPredicate implements ObjectSourcePlayerPredicate<ObjectSourcePlayer<Controllable>> {
+public class DamagedPlayerThisTurnPredicate implements ObjectSourcePlayerPredicate<Controllable> {
 
     private final TargetController controller;
 
diff --git a/Mage/src/main/java/mage/filter/predicate/other/PlayerCanGainLifePredicate.java b/Mage/src/main/java/mage/filter/predicate/other/PlayerCanGainLifePredicate.java
index dcb75de105..e8f48308e1 100644
--- a/Mage/src/main/java/mage/filter/predicate/other/PlayerCanGainLifePredicate.java
+++ b/Mage/src/main/java/mage/filter/predicate/other/PlayerCanGainLifePredicate.java
@@ -10,7 +10,7 @@ import mage.players.Player;
  *
  * @author LevelX2
  */
-public class PlayerCanGainLifePredicate implements ObjectSourcePlayerPredicate<ObjectSourcePlayer<Player>> {
+public class PlayerCanGainLifePredicate implements ObjectSourcePlayerPredicate<Player> {
 
 //    public PlayerCanGainLifePredicate() {
 //    }
diff --git a/Mage/src/main/java/mage/filter/predicate/permanent/AnotherEnchantedPredicate.java b/Mage/src/main/java/mage/filter/predicate/permanent/AnotherEnchantedPredicate.java
index 75d946dde9..12bbdd5edb 100644
--- a/Mage/src/main/java/mage/filter/predicate/permanent/AnotherEnchantedPredicate.java
+++ b/Mage/src/main/java/mage/filter/predicate/permanent/AnotherEnchantedPredicate.java
@@ -10,7 +10,7 @@ import mage.game.permanent.Permanent;
  *
  * @author LevelX2
  */
-public class AnotherEnchantedPredicate implements ObjectSourcePlayerPredicate<ObjectSourcePlayer<Permanent>> {
+public class AnotherEnchantedPredicate implements ObjectSourcePlayerPredicate<Permanent> {
 
     @Override
     public boolean apply(ObjectSourcePlayer<Permanent> input, Game game) {
diff --git a/Mage/src/main/java/mage/filter/predicate/permanent/AttachedToControlledPermanentPredicate.java b/Mage/src/main/java/mage/filter/predicate/permanent/AttachedToControlledPermanentPredicate.java
index 58b8aa6fe9..29f1b839a2 100644
--- a/Mage/src/main/java/mage/filter/predicate/permanent/AttachedToControlledPermanentPredicate.java
+++ b/Mage/src/main/java/mage/filter/predicate/permanent/AttachedToControlledPermanentPredicate.java
@@ -10,7 +10,7 @@ import mage.game.permanent.Permanent;
  *
  * @author North & L_J
  */
-public class AttachedToControlledPermanentPredicate implements ObjectSourcePlayerPredicate<ObjectSourcePlayer<Permanent>> {
+public class AttachedToControlledPermanentPredicate implements ObjectSourcePlayerPredicate<Permanent> {
 
     @Override
     public boolean apply(ObjectSourcePlayer<Permanent> input, Game game) {
diff --git a/Mage/src/main/java/mage/filter/predicate/permanent/BlockingOrBlockedBySourcePredicate.java b/Mage/src/main/java/mage/filter/predicate/permanent/BlockingOrBlockedBySourcePredicate.java
index 6b3048bbf7..4e5af9d9dd 100644
--- a/Mage/src/main/java/mage/filter/predicate/permanent/BlockingOrBlockedBySourcePredicate.java
+++ b/Mage/src/main/java/mage/filter/predicate/permanent/BlockingOrBlockedBySourcePredicate.java
@@ -11,7 +11,7 @@ import java.util.UUID;
 /**
  * @author TheElk801
  */
-public enum BlockingOrBlockedBySourcePredicate implements ObjectSourcePlayerPredicate<ObjectSourcePlayer<Permanent>> {
+public enum BlockingOrBlockedBySourcePredicate implements ObjectSourcePlayerPredicate<Permanent> {
     BLOCKING,
     BLOCKED_BY,
     EITHER;
diff --git a/Mage/src/main/java/mage/filter/predicate/permanent/DefendingPlayerControlsPredicate.java b/Mage/src/main/java/mage/filter/predicate/permanent/DefendingPlayerControlsPredicate.java
index 89f43c2677..d6cdf5e23a 100644
--- a/Mage/src/main/java/mage/filter/predicate/permanent/DefendingPlayerControlsPredicate.java
+++ b/Mage/src/main/java/mage/filter/predicate/permanent/DefendingPlayerControlsPredicate.java
@@ -8,7 +8,7 @@ import mage.game.permanent.Permanent;
 /**
  * @author TheElk801
  */
-public enum DefendingPlayerControlsPredicate implements ObjectSourcePlayerPredicate<ObjectSourcePlayer<Permanent>> {
+public enum DefendingPlayerControlsPredicate implements ObjectSourcePlayerPredicate<Permanent> {
     instance;
 
     @Override
diff --git a/Mage/src/main/java/mage/filter/predicate/permanent/GreatestPowerControlledPredicate.java b/Mage/src/main/java/mage/filter/predicate/permanent/GreatestPowerControlledPredicate.java
index 0b6e3d90e9..e2a83ef107 100644
--- a/Mage/src/main/java/mage/filter/predicate/permanent/GreatestPowerControlledPredicate.java
+++ b/Mage/src/main/java/mage/filter/predicate/permanent/GreatestPowerControlledPredicate.java
@@ -9,7 +9,7 @@ import mage.game.permanent.Permanent;
 /**
  * @author jeffwadsworth
  */
-public enum GreatestPowerControlledPredicate implements ObjectSourcePlayerPredicate<ObjectSourcePlayer<Permanent>> {
+public enum GreatestPowerControlledPredicate implements ObjectSourcePlayerPredicate<Permanent> {
     instance;
 
     @Override