diff --git a/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/AmonkhetBlock.java b/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/AmonkhetBlock.java
index c990336b4d..81889ba6cc 100644
--- a/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/AmonkhetBlock.java
+++ b/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/AmonkhetBlock.java
@@ -12,7 +12,7 @@ public class AmonkhetBlock extends Constructed {
 
     public AmonkhetBlock() {
         super("Constructed - Amonkhet Block");
-        setCodes.add("AKH");
-        setCodes.add("HOU");
+        setCodes.add(mage.sets.Amonkhet.getInstance().getCode());
+        setCodes.add(mage.sets.HourOfDevastation.getInstance().getCode());
     }
 }
diff --git a/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/BattleForZendikarBlock.java b/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/BattleForZendikarBlock.java
index f04f324c9b..a04307948b 100644
--- a/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/BattleForZendikarBlock.java
+++ b/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/BattleForZendikarBlock.java
@@ -12,7 +12,7 @@ public class BattleForZendikarBlock extends Constructed {
 
     public BattleForZendikarBlock() {
         super("Constructed - Battle for Zendikar Block");
-        setCodes.add("BFZ");
-        setCodes.add("OGW");
+        setCodes.add(mage.sets.BattleForZendikar.getInstance().getCode());
+        setCodes.add(mage.sets.OathOfTheGatewatch.getInstance().getCode());
     }
 }
diff --git a/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/InnistradBlock.java b/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/InnistradBlock.java
index a9c5f6df87..1b1a8ff7e5 100644
--- a/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/InnistradBlock.java
+++ b/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/InnistradBlock.java
@@ -12,9 +12,9 @@ public class InnistradBlock extends Constructed {
 
     public InnistradBlock() {
         super("Constructed - Innistrad Block");
-        setCodes.add("ISD");
-        setCodes.add("DKA");
-        setCodes.add("AVR");
+        setCodes.add(mage.sets.Innistrad.getInstance().getCode());
+        setCodes.add(mage.sets.DarkAscension.getInstance().getCode());
+        setCodes.add(mage.sets.AvacynRestored.getInstance().getCode());
     }
 
 }
diff --git a/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/IxalanBlock.java b/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/IxalanBlock.java
index 0371e17e99..ed45300693 100644
--- a/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/IxalanBlock.java
+++ b/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/IxalanBlock.java
@@ -11,7 +11,7 @@ public class IxalanBlock extends Constructed {
 
     public IxalanBlock() {
         super("Constructed - Ixalan Block");
-        setCodes.add("XLN");
-        setCodes.add("RIX");
+        setCodes.add(mage.sets.Ixalan.getInstance().getCode());
+        setCodes.add(mage.sets.RivalsOfIxalan.getInstance().getCode());
     }
 }
diff --git a/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/KaladeshBlock.java b/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/KaladeshBlock.java
index 2305941966..0c482330c1 100644
--- a/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/KaladeshBlock.java
+++ b/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/KaladeshBlock.java
@@ -12,7 +12,7 @@ public class KaladeshBlock extends Constructed {
 
     public KaladeshBlock() {
         super("Constructed - Kaladesh Block");
-        setCodes.add("KLD");
-        setCodes.add("AER");
+        setCodes.add(mage.sets.Kaladesh.getInstance().getCode());
+        setCodes.add(mage.sets.AetherRevolt.getInstance().getCode());
     }
 }
diff --git a/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/KamigawaBlock.java b/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/KamigawaBlock.java
index 4995e79077..4ed6b96c77 100644
--- a/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/KamigawaBlock.java
+++ b/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/KamigawaBlock.java
@@ -12,9 +12,9 @@ public class KamigawaBlock extends Constructed {
 
     public KamigawaBlock() {
         super("Constructed - Kamigawa Block");
-        setCodes.add("CHK");
-        setCodes.add("BOK");
-        setCodes.add("SOK");
+        setCodes.add(mage.sets.ChampionsOfKamigawa.getInstance().getCode());
+        setCodes.add(mage.sets.BetrayersOfKamigawa.getInstance().getCode());
+        setCodes.add(mage.sets.SaviorsOfKamigawa.getInstance().getCode());
     }
 
 }
diff --git a/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/KhansOfTarkirBlock.java b/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/KhansOfTarkirBlock.java
index dcf0b2df7b..0b2da30212 100644
--- a/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/KhansOfTarkirBlock.java
+++ b/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/KhansOfTarkirBlock.java
@@ -12,9 +12,9 @@ public class KhansOfTarkirBlock extends Constructed {
 
     public KhansOfTarkirBlock() {
         super("Constructed - Khans of Tarkir Block");
-        setCodes.add("KTK");
-        setCodes.add("FRF");
-        setCodes.add("DTK");
+        setCodes.add(mage.sets.KhansOfTarkir.getInstance().getCode());
+        setCodes.add(mage.sets.FateReforged.getInstance().getCode());
+        setCodes.add(mage.sets.DragonsOfTarkir.getInstance().getCode());
     }
 
 }
diff --git a/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/LorwynBlock.java b/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/LorwynBlock.java
index 8580ad0839..71f1738c2c 100644
--- a/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/LorwynBlock.java
+++ b/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/LorwynBlock.java
@@ -11,7 +11,7 @@ public class LorwynBlock extends Constructed {
 
     public LorwynBlock() {
         super("Constructed - Lorwyn Block");
-        setCodes.add("LRW");
-        setCodes.add("MOR");
+        setCodes.add(mage.sets.Lorwyn.getInstance().getCode());
+        setCodes.add(mage.sets.Morningtide.getInstance().getCode());
     }
 }
diff --git a/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/ReturnToRavnicaBlock.java b/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/ReturnToRavnicaBlock.java
index bf03471020..c5be6ff882 100644
--- a/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/ReturnToRavnicaBlock.java
+++ b/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/ReturnToRavnicaBlock.java
@@ -12,9 +12,9 @@ public class ReturnToRavnicaBlock extends Constructed {
 
     public ReturnToRavnicaBlock() {
         super("Constructed - Return to Ravnica Block");
-        setCodes.add("RTR");
-        setCodes.add("GTC");
-        setCodes.add("DGM");
+        setCodes.add(mage.sets.ReturnToRavnica.getInstance().getCode());
+        setCodes.add(mage.sets.Gatecrash.getInstance().getCode());
+        setCodes.add(mage.sets.DragonsMaze.getInstance().getCode());
     }
 
 }
diff --git a/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/ScarsOfMirrodinBlock.java b/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/ScarsOfMirrodinBlock.java
index 7a11085022..b3f3f6d813 100644
--- a/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/ScarsOfMirrodinBlock.java
+++ b/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/ScarsOfMirrodinBlock.java
@@ -12,9 +12,9 @@ public class ScarsOfMirrodinBlock extends Constructed {
 
     public ScarsOfMirrodinBlock() {
         super("Constructed - Scars of Mirrodin Block");
-        setCodes.add("SOM");
-        setCodes.add("MBS");
-        setCodes.add("NPH");
+        setCodes.add(mage.sets.ScarsOfMirrodin.getInstance().getCode());
+        setCodes.add(mage.sets.MirrodinBesieged.getInstance().getCode());
+        setCodes.add(mage.sets.NewPhyrexia.getInstance().getCode());
     }
 
 }
diff --git a/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/ShadowmoorBlock.java b/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/ShadowmoorBlock.java
index 1b53c1328a..b9b0a62883 100644
--- a/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/ShadowmoorBlock.java
+++ b/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/ShadowmoorBlock.java
@@ -12,8 +12,8 @@ public class ShadowmoorBlock extends Constructed {
 
     public ShadowmoorBlock() {
         super("Constructed - Shadowmoor Block");
-        setCodes.add("SHM");
-        setCodes.add("EVE");
+        setCodes.add(mage.sets.Shadowmoor.getInstance().getCode());
+        setCodes.add(mage.sets.Eventide.getInstance().getCode());
     }
 
 }
diff --git a/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/ShadowsOverInnistradBlock.java b/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/ShadowsOverInnistradBlock.java
index ac23b31dcc..a3b5a4434f 100644
--- a/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/ShadowsOverInnistradBlock.java
+++ b/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/ShadowsOverInnistradBlock.java
@@ -12,7 +12,7 @@ public class ShadowsOverInnistradBlock extends Constructed {
 
     public ShadowsOverInnistradBlock() {
         super("Constructed - Shadows over Innistrad Block");
-        setCodes.add("SOI");
-        setCodes.add("EDM");
+        setCodes.add(mage.sets.ShadowsOverInnistrad.getInstance().getCode());
+        setCodes.add(mage.sets.EldritchMoon.getInstance().getCode());
     }
 }
diff --git a/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/ShardsOfAlaraBlock.java b/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/ShardsOfAlaraBlock.java
index ef281abeb1..5c83979b2d 100644
--- a/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/ShardsOfAlaraBlock.java
+++ b/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/ShardsOfAlaraBlock.java
@@ -12,9 +12,9 @@ public class ShardsOfAlaraBlock extends Constructed {
 
     public ShardsOfAlaraBlock() {
         super("Constructed - Shards of Alara Block");
-        setCodes.add("ALA");
-        setCodes.add("CON");
-        setCodes.add("ARB");
+        setCodes.add(mage.sets.ShardsOfAlara.getInstance().getCode());
+        setCodes.add(mage.sets.Conflux.getInstance().getCode());
+        setCodes.add(mage.sets.AlaraReborn.getInstance().getCode());
     }
 
 }
diff --git a/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/StarWarsBlock.java b/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/StarWarsBlock.java
index b3e2a662fc..a65dafcd6f 100644
--- a/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/StarWarsBlock.java
+++ b/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/StarWarsBlock.java
@@ -15,7 +15,7 @@ public class StarWarsBlock extends Constructed {
 
     public StarWarsBlock() {
         super("Constructed Custom - Star Wars Block");
-        setCodes.add("SWS");
+        setCodes.add(mage.sets.StarWars.getInstance().getCode());
     }
 
 }
diff --git a/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/SuperType2.java b/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/SuperType2.java
index 8bf79d1f69..17a1c9909f 100644
--- a/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/SuperType2.java
+++ b/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/SuperType2.java
@@ -26,7 +26,7 @@ public class SuperType2 extends Constructed {
      * Kamigawa/Ravnica standard, where rotation stabilized.
      * Data taken from http://thattournament.website/historic-tournament.php
      */
-    protected static final String[][] standards = {
+    private static final String[][] standards = {
             // 11th Standard
             {"7ED", "INV", "APC", "PLS", "ODY", "TOR", "JUD"},
             // 12th Standard
@@ -72,7 +72,7 @@ public class SuperType2 extends Constructed {
      * regular validation function to test validity.
      *
      * @param deck - the deck to validate.
-     * @return
+     * @return boolean if valid deck
      */
     @Override
     public boolean validate(Deck deck) {
diff --git a/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/TherosBlock.java b/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/TherosBlock.java
index d4895e674e..785ff3eb74 100644
--- a/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/TherosBlock.java
+++ b/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/TherosBlock.java
@@ -12,9 +12,9 @@ public class TherosBlock extends Constructed {
 
     public TherosBlock() {
         super("Constructed - Theros Block");
-        setCodes.add("THS");
-        setCodes.add("BNG");
-        setCodes.add("JOU");
+        setCodes.add(mage.sets.Theros.getInstance().getCode());
+        setCodes.add(mage.sets.BornOfTheGods.getInstance().getCode());
+        setCodes.add(mage.sets.JourneyIntoNyx.getInstance().getCode());
     }
 
 }
diff --git a/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/ZendikarBlock.java b/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/ZendikarBlock.java
index 38b54c0d36..d25c61f006 100644
--- a/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/ZendikarBlock.java
+++ b/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/ZendikarBlock.java
@@ -15,9 +15,9 @@ public class ZendikarBlock extends Constructed {
 
     public ZendikarBlock() {
         super("Constructed - Zendikar Block");
-        setCodes.add("ZEN");
-        setCodes.add("WWK");
-        setCodes.add("ROE");
+        setCodes.add(mage.sets.Zendikar.getInstance().getCode());
+        setCodes.add(mage.sets.Worldwake.getInstance().getCode());
+        setCodes.add(mage.sets.RiseOfTheEldrazi.getInstance().getCode());
     }
 
 }
diff --git a/Mage.Sets/src/mage/sets/AetherRevolt.java b/Mage.Sets/src/mage/sets/AetherRevolt.java
index e16c052f5d..30d7542c51 100644
--- a/Mage.Sets/src/mage/sets/AetherRevolt.java
+++ b/Mage.Sets/src/mage/sets/AetherRevolt.java
@@ -22,7 +22,7 @@ public final class AetherRevolt extends ExpansionSet {
         return instance;
     }
 
-    protected final List<CardInfo> savedSpecialLand = new ArrayList<>();
+    private final List<CardInfo> savedSpecialLand = new ArrayList<>();
 
     private AetherRevolt() {
         super("Aether Revolt", "AER", ExpansionSet.buildDate(2017, 1, 20), SetType.EXPANSION);
diff --git a/Mage.Sets/src/mage/sets/Amonkhet.java b/Mage.Sets/src/mage/sets/Amonkhet.java
index f72f4af451..dd91674773 100644
--- a/Mage.Sets/src/mage/sets/Amonkhet.java
+++ b/Mage.Sets/src/mage/sets/Amonkhet.java
@@ -23,7 +23,7 @@ public final class Amonkhet extends ExpansionSet {
         return instance;
     }
 
-    protected final List<CardInfo> savedSpecialLand = new ArrayList<>();
+    private final List<CardInfo> savedSpecialLand = new ArrayList<>();
 
     private Amonkhet() {
         super("Amonkhet", "AKH", ExpansionSet.buildDate(2017, 4, 28), SetType.EXPANSION);
diff --git a/Mage.Sets/src/mage/sets/BattleForZendikar.java b/Mage.Sets/src/mage/sets/BattleForZendikar.java
index ff90d62d61..d12ac8e78b 100644
--- a/Mage.Sets/src/mage/sets/BattleForZendikar.java
+++ b/Mage.Sets/src/mage/sets/BattleForZendikar.java
@@ -21,7 +21,7 @@ public final class BattleForZendikar extends ExpansionSet {
         return instance;
     }
 
-    protected final List<CardInfo> savedSpecialLand = new ArrayList<>();
+    private final List<CardInfo> savedSpecialLand = new ArrayList<>();
 
     private BattleForZendikar() {
         super("Battle for Zendikar", "BFZ", ExpansionSet.buildDate(2015, 10, 2), SetType.EXPANSION);
diff --git a/Mage.Sets/src/mage/sets/CoreSet2019.java b/Mage.Sets/src/mage/sets/CoreSet2019.java
index 132743ef00..bb7cb7ef76 100644
--- a/Mage.Sets/src/mage/sets/CoreSet2019.java
+++ b/Mage.Sets/src/mage/sets/CoreSet2019.java
@@ -1,9 +1,7 @@
 package mage.sets;
 
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.List;
-import mage.cards.Card;
 import mage.cards.ExpansionSet;
 import mage.cards.repository.CardCriteria;
 import mage.cards.repository.CardInfo;
@@ -23,8 +21,8 @@ public final class CoreSet2019 extends ExpansionSet {
     public static CoreSet2019 getInstance() {
         return instance;
     }
-    List<CardInfo> savedSpecialCommon = new ArrayList<>();
-    protected final List<CardInfo> savedSpecialLand = new ArrayList<>();
+
+    private final List<CardInfo> savedSpecialLand = new ArrayList<>();
 
     private CoreSet2019() {
         super("Core Set 2019", "M19", ExpansionSet.buildDate(2018, 7, 13), SetType.CORE);
@@ -372,7 +370,7 @@ public final class CoreSet2019 extends ExpansionSet {
                 criteria.setCodes(this.code).notTypes(CardType.LAND);
                 savedCardsInfos = CardRepository.instance.findCards(criteria);
                 if (maxCardNumberInBooster != Integer.MAX_VALUE) {
-                    savedCardsInfos.removeIf(next -> next.getCardNumberAsInt() > maxCardNumberInBooster && rarity != Rarity.LAND);
+                    savedCardsInfos.removeIf(next -> next.getCardNumberAsInt() > maxCardNumberInBooster);
                 }
                 savedCards.put(rarity, savedCardsInfos);
             }
diff --git a/Mage.Sets/src/mage/sets/CoreSet2020.java b/Mage.Sets/src/mage/sets/CoreSet2020.java
index 8c04f68cf6..dc5db516ac 100644
--- a/Mage.Sets/src/mage/sets/CoreSet2020.java
+++ b/Mage.Sets/src/mage/sets/CoreSet2020.java
@@ -22,7 +22,6 @@ public final class CoreSet2020 extends ExpansionSet {
         return instance;
     }
 
-    private final List<CardInfo> savedSpecialCommon = new ArrayList<>();
     private final List<CardInfo> savedSpecialLand = new ArrayList<>();
 
     private CoreSet2020() {
@@ -399,7 +398,7 @@ public final class CoreSet2020 extends ExpansionSet {
                 criteria.setCodes(this.code).notTypes(CardType.LAND);
                 savedCardsInfos = CardRepository.instance.findCards(criteria);
                 if (maxCardNumberInBooster != Integer.MAX_VALUE) {
-                    savedCardsInfos.removeIf(next -> next.getCardNumberAsInt() > maxCardNumberInBooster && rarity != Rarity.LAND);
+                    savedCardsInfos.removeIf(next -> next.getCardNumberAsInt() > maxCardNumberInBooster);
                 }
                 savedCards.put(rarity, savedCardsInfos);
             }
diff --git a/Mage.Sets/src/mage/sets/DragonsMaze.java b/Mage.Sets/src/mage/sets/DragonsMaze.java
index 8e01820b2a..ab778d037a 100644
--- a/Mage.Sets/src/mage/sets/DragonsMaze.java
+++ b/Mage.Sets/src/mage/sets/DragonsMaze.java
@@ -23,10 +23,10 @@ public final class DragonsMaze extends ExpansionSet {
         return instance;
     }
 
-    List<CardInfo> savedSpecialRares = new ArrayList<>();
+    private List<CardInfo> savedSpecialRares = new ArrayList<>();
 
     private DragonsMaze() {
-        super("Dragon's Maze", "DGM", ExpansionSet.buildDate(2013, 5, 03), SetType.EXPANSION);
+        super("Dragon's Maze", "DGM", ExpansionSet.buildDate(2013, 5, 3), SetType.EXPANSION);
         this.blockName = "Return to Ravnica";
         this.hasBoosters = true;
         this.numBoosterSpecial = 1;
@@ -204,7 +204,7 @@ public final class DragonsMaze extends ExpansionSet {
                 criteria.rarities(rarity).doubleFaced(false);
                 savedCardsInfos = CardRepository.instance.findCards(criteria);
                 if (maxCardNumberInBooster != Integer.MAX_VALUE) {
-                    savedCardsInfos.removeIf(next -> next.getCardNumberAsInt() > maxCardNumberInBooster && rarity != Rarity.LAND);
+                    savedCardsInfos.removeIf(next -> next.getCardNumberAsInt() > maxCardNumberInBooster);
                 }
                 savedCards.put(rarity, savedCardsInfos);
             }
@@ -224,7 +224,6 @@ public final class DragonsMaze extends ExpansionSet {
 
     @Override
     public List<CardInfo> getSpecialRare() {
-        List<CardInfo> specialRares = new ArrayList<>();
         if (savedSpecialRares == null) {
             CardCriteria criteria = new CardCriteria();
             criteria.setCodes("GTC").name("Breeding Pool");
@@ -258,8 +257,7 @@ public final class DragonsMaze extends ExpansionSet {
             criteria.setCodes("RTR").name("Temple Garden");
             savedSpecialRares.addAll(CardRepository.instance.findCards(criteria));
         }
-        specialRares.addAll(savedSpecialRares);
-        return specialRares;
+        return new ArrayList<>(savedSpecialRares);
     }
 
     @Override
diff --git a/Mage.Sets/src/mage/sets/DuelDecksDivineVsDemonic.java b/Mage.Sets/src/mage/sets/DuelDecksDivineVsDemonic.java
index 9ea0082a56..cbf49424b2 100644
--- a/Mage.Sets/src/mage/sets/DuelDecksDivineVsDemonic.java
+++ b/Mage.Sets/src/mage/sets/DuelDecksDivineVsDemonic.java
@@ -16,7 +16,7 @@ public final class DuelDecksDivineVsDemonic extends ExpansionSet {
     }
 
     private DuelDecksDivineVsDemonic() {
-        super("Duel Decks: Divine vs. Demonic", "DDC", ExpansionSet.buildDate(2009, 04, 10), SetType.SUPPLEMENTAL);
+        super("Duel Decks: Divine vs. Demonic", "DDC", ExpansionSet.buildDate(2009, 4, 10), SetType.SUPPLEMENTAL);
         this.blockName = "Duel Decks";
         this.hasBasicLands = true;
 
diff --git a/Mage.Sets/src/mage/sets/DuelDecksJaceVsChandra.java b/Mage.Sets/src/mage/sets/DuelDecksJaceVsChandra.java
index ba925a659d..1592d0482b 100644
--- a/Mage.Sets/src/mage/sets/DuelDecksJaceVsChandra.java
+++ b/Mage.Sets/src/mage/sets/DuelDecksJaceVsChandra.java
@@ -21,7 +21,7 @@ public final class DuelDecksJaceVsChandra extends ExpansionSet {
     }
 
     private DuelDecksJaceVsChandra() {
-        super("Duel Decks: Jace vs. Chandra", "DD2", ExpansionSet.buildDate(2008, 11, 07), SetType.SUPPLEMENTAL);
+        super("Duel Decks: Jace vs. Chandra", "DD2", ExpansionSet.buildDate(2008, 11, 7), SetType.SUPPLEMENTAL);
         this.blockName = "Duel Decks";
         this.hasBasicLands = true;
 
diff --git a/Mage.Sets/src/mage/sets/FateReforged.java b/Mage.Sets/src/mage/sets/FateReforged.java
index f29b7d81b3..3b6abc7104 100644
--- a/Mage.Sets/src/mage/sets/FateReforged.java
+++ b/Mage.Sets/src/mage/sets/FateReforged.java
@@ -19,8 +19,8 @@ public final class FateReforged extends ExpansionSet {
 
     private static final FateReforged instance = new FateReforged();
 
-    List<CardInfo> savedSpecialRares = new ArrayList<>();
-    List<CardInfo> savedSpecialCommon = new ArrayList<>();
+    private List<CardInfo> savedSpecialRares = new ArrayList<>();
+    private List<CardInfo> savedSpecialCommon = new ArrayList<>();
 
     public static FateReforged getInstance() {
         return instance;
@@ -238,7 +238,7 @@ public final class FateReforged extends ExpansionSet {
                 criteria.setCodes(this.code).notTypes(CardType.LAND);
                 savedCardsInfos = CardRepository.instance.findCards(criteria);
                 if (maxCardNumberInBooster != Integer.MAX_VALUE) {
-                    savedCardsInfos.removeIf(next -> next.getCardNumberAsInt() > maxCardNumberInBooster && rarity != Rarity.LAND);
+                    savedCardsInfos.removeIf(next -> next.getCardNumberAsInt() > maxCardNumberInBooster);
                 }
                 savedCards.put(rarity, savedCardsInfos);
             }
@@ -251,7 +251,6 @@ public final class FateReforged extends ExpansionSet {
 
     @Override
     public List<CardInfo> getSpecialCommon() {
-        List<CardInfo> specialCommons = new ArrayList<>();
         if (savedSpecialCommon.isEmpty()) {
             // the 10 common lands from Fate Reforged can show up in the basic lands slot
             // http://magic.wizards.com/en/articles/archive/feature/fetching-look-fate-reforged-2014-12-24
@@ -261,13 +260,11 @@ public final class FateReforged extends ExpansionSet {
             criteria.rarities(Rarity.LAND).setCodes(this.code);
             savedSpecialCommon.addAll(CardRepository.instance.findCards(criteria));
         }
-        specialCommons.addAll(savedSpecialCommon);
-        return specialCommons;
+        return new ArrayList<>(savedSpecialCommon);
     }
 
     @Override
     public List<CardInfo> getSpecialRare() {
-        List<CardInfo> specialRares = new ArrayList<>();
         if (savedSpecialRares.isEmpty()) {
             CardCriteria criteria = new CardCriteria();
             criteria.setCodes("KTK").name("Bloodstained Mire");
@@ -285,7 +282,6 @@ public final class FateReforged extends ExpansionSet {
             criteria.setCodes("KTK").name("Wooded Foothills");
             savedSpecialRares.addAll(CardRepository.instance.findCards(criteria));
         }
-        specialRares.addAll(savedSpecialRares);
-        return specialRares;
+        return new ArrayList<>(savedSpecialRares);
     }
 }
diff --git a/Mage.Sets/src/mage/sets/HourOfDevastation.java b/Mage.Sets/src/mage/sets/HourOfDevastation.java
index 674806cd54..e0ec55cc55 100644
--- a/Mage.Sets/src/mage/sets/HourOfDevastation.java
+++ b/Mage.Sets/src/mage/sets/HourOfDevastation.java
@@ -22,7 +22,7 @@ public final class HourOfDevastation extends ExpansionSet {
         return instance;
     }
 
-    protected final List<CardInfo> savedSpecialLand = new ArrayList<>();
+    private final List<CardInfo> savedSpecialLand = new ArrayList<>();
 
     private HourOfDevastation() {
         super("Hour of Devastation", "HOU", ExpansionSet.buildDate(2017, 7, 14), SetType.EXPANSION);
diff --git a/Mage.Sets/src/mage/sets/Kaladesh.java b/Mage.Sets/src/mage/sets/Kaladesh.java
index 404da667ad..db2f010aa1 100644
--- a/Mage.Sets/src/mage/sets/Kaladesh.java
+++ b/Mage.Sets/src/mage/sets/Kaladesh.java
@@ -23,7 +23,7 @@ public final class Kaladesh extends ExpansionSet {
         return instance;
     }
 
-    protected final List<CardInfo> savedSpecialLand = new ArrayList<>();
+    private final List<CardInfo> savedSpecialLand = new ArrayList<>();
 
     private Kaladesh() {
         super("Kaladesh", "KLD", ExpansionSet.buildDate(2016, 9, 30), SetType.EXPANSION);
diff --git a/Mage.Sets/src/mage/sets/Masters25.java b/Mage.Sets/src/mage/sets/Masters25.java
index b3dff91f48..6b87c8b9a7 100644
--- a/Mage.Sets/src/mage/sets/Masters25.java
+++ b/Mage.Sets/src/mage/sets/Masters25.java
@@ -1,14 +1,13 @@
 
 package mage.sets;
 
-/**
- *
- * @author JayDi85
- */
 import mage.cards.ExpansionSet;
 import mage.constants.Rarity;
 import mage.constants.SetType;
 
+/**
+ * @author JayDi85
+ */
 public final class Masters25 extends ExpansionSet {
 
     private static final Masters25 instance = new Masters25();
diff --git a/Mage.Sets/src/mage/sets/MastersEditionIV.java b/Mage.Sets/src/mage/sets/MastersEditionIV.java
index 6a680a577b..555bfe9b18 100644
--- a/Mage.Sets/src/mage/sets/MastersEditionIV.java
+++ b/Mage.Sets/src/mage/sets/MastersEditionIV.java
@@ -22,7 +22,7 @@ public final class MastersEditionIV extends ExpansionSet {
         return instance;
     }
 
-    protected final List<CardInfo> savedSpecialLand = new ArrayList<>();
+    private final List<CardInfo> savedSpecialLand = new ArrayList<>();
 
     private MastersEditionIV() {
         super("Masters Edition IV", "ME4", ExpansionSet.buildDate(2011, 1, 10), SetType.MAGIC_ONLINE);
diff --git a/Mage.Sets/src/mage/sets/OathOfTheGatewatch.java b/Mage.Sets/src/mage/sets/OathOfTheGatewatch.java
index 538d9dc685..80f4bae9c8 100644
--- a/Mage.Sets/src/mage/sets/OathOfTheGatewatch.java
+++ b/Mage.Sets/src/mage/sets/OathOfTheGatewatch.java
@@ -26,7 +26,7 @@ public final class OathOfTheGatewatch extends ExpansionSet {
         return instance;
     }
 
-    protected final List<CardInfo> savedSpecialLand = new ArrayList<>();
+    private final List<CardInfo> savedSpecialLand = new ArrayList<>();
 
     private OathOfTheGatewatch() {
         super("Oath of the Gatewatch", "OGW", ExpansionSet.buildDate(2016, 1, 22), SetType.EXPANSION);
diff --git a/Mage.Sets/src/mage/sets/Portal.java b/Mage.Sets/src/mage/sets/Portal.java
index 36eb3c8f52..b55822aa53 100644
--- a/Mage.Sets/src/mage/sets/Portal.java
+++ b/Mage.Sets/src/mage/sets/Portal.java
@@ -12,9 +12,6 @@ public final class Portal extends ExpansionSet {
 
     private static final Portal instance = new Portal();
 
-    /**
-     * @return
-     */
     public static Portal getInstance() {
         return instance;
     }
diff --git a/Mage.Sets/src/mage/sets/PortalSecondAge.java b/Mage.Sets/src/mage/sets/PortalSecondAge.java
index 1efd4d7421..76b4468f84 100644
--- a/Mage.Sets/src/mage/sets/PortalSecondAge.java
+++ b/Mage.Sets/src/mage/sets/PortalSecondAge.java
@@ -13,10 +13,6 @@ public final class PortalSecondAge extends ExpansionSet {
 
     private static final PortalSecondAge instance = new PortalSecondAge();
 
-    /**
-     *
-     * @return
-     */
     public static PortalSecondAge getInstance() {
         return instance;
     }
diff --git a/Mage.Sets/src/mage/sets/ShadowsOverInnistrad.java b/Mage.Sets/src/mage/sets/ShadowsOverInnistrad.java
index e2c86cbcc8..e988c73cec 100644
--- a/Mage.Sets/src/mage/sets/ShadowsOverInnistrad.java
+++ b/Mage.Sets/src/mage/sets/ShadowsOverInnistrad.java
@@ -25,7 +25,7 @@ public final class ShadowsOverInnistrad extends ExpansionSet {
         return instance;
     }
 
-    protected final EnumMap<Rarity, List<CardInfo>> savedDoubleFacedCards;
+    private final EnumMap<Rarity, List<CardInfo>> savedDoubleFacedCards;
 
     private ShadowsOverInnistrad() {
         super("Shadows over Innistrad", "SOI", ExpansionSet.buildDate(2016, 4, 8), SetType.EXPANSION);
@@ -387,7 +387,7 @@ public final class ShadowsOverInnistrad extends ExpansionSet {
         }
     }
 
-    public List<CardInfo> getDoubleFacedCardsByRarity(Rarity rarity) {
+    private List<CardInfo> getDoubleFacedCardsByRarity(Rarity rarity) {
         List<CardInfo> savedCardsInfos = savedDoubleFacedCards.get(rarity);
         if (savedCardsInfos == null) {
             CardCriteria criteria = new CardCriteria();
diff --git a/Mage.Sets/src/mage/sets/Starter2000.java b/Mage.Sets/src/mage/sets/Starter2000.java
index 1e3a3f1c95..ef18ba3448 100644
--- a/Mage.Sets/src/mage/sets/Starter2000.java
+++ b/Mage.Sets/src/mage/sets/Starter2000.java
@@ -13,10 +13,6 @@ public final class Starter2000 extends ExpansionSet {
 
     private static final Starter2000 instance = new Starter2000();
 
-    /**
-     *
-     * @return
-     */
     public static Starter2000 getInstance() {
         return instance;
     }
diff --git a/Mage.Tests/src/test/java/org/mage/test/serverside/deck/DeckValidatorTest.java b/Mage.Tests/src/test/java/org/mage/test/serverside/deck/DeckValidatorTest.java
index 3feddbd4eb..abbbb3e156 100644
--- a/Mage.Tests/src/test/java/org/mage/test/serverside/deck/DeckValidatorTest.java
+++ b/Mage.Tests/src/test/java/org/mage/test/serverside/deck/DeckValidatorTest.java
@@ -28,14 +28,14 @@ public class DeckValidatorTest extends MageTestBase {
 
         int number;
 
-        public CardNameAmount(String setCode, int cardNumber, int number) {
+        CardNameAmount(String setCode, int cardNumber, int number) {
             this.name = "";
             this.setCode = setCode;
             this.cardNumber = String.valueOf(cardNumber);
             this.number = number;
         }
 
-        public CardNameAmount(String name, int number) {
+        CardNameAmount(String name, int number) {
             this.name = name;
             this.number = number;
         }
@@ -48,11 +48,11 @@ public class DeckValidatorTest extends MageTestBase {
             return number;
         }
 
-        public String getSetCode() {
+        String getSetCode() {
             return setCode;
         }
 
-        public String getCardNumber() {
+        String getCardNumber() {
             return cardNumber;
         }
 
@@ -359,6 +359,7 @@ public class DeckValidatorTest extends MageTestBase {
                     cardinfo = CardRepository.instance.findCard(cardNameAmount.getName());
                 }
                 for (int i = 0; i < cardNameAmount.getNumber(); i++) {
+                    assert cardinfo != null;
                     deckToTest.getCards().add(cardinfo.getCard());
                 }
             }
@@ -372,6 +373,7 @@ public class DeckValidatorTest extends MageTestBase {
                     cardinfo = CardRepository.instance.findCard(cardNameAmount.getName());
                 }
                 for (int i = 0; i < cardNameAmount.getNumber(); i++) {
+                    assert cardinfo != null;
                     deckToTest.getSideboard().add(cardinfo.getCard());
                 }
             }
diff --git a/Mage.Tests/src/test/java/org/mage/test/sets/BoosterGenerationTest.java b/Mage.Tests/src/test/java/org/mage/test/sets/BoosterGenerationTest.java
index e3347d4ce3..810dae41b6 100644
--- a/Mage.Tests/src/test/java/org/mage/test/sets/BoosterGenerationTest.java
+++ b/Mage.Tests/src/test/java/org/mage/test/sets/BoosterGenerationTest.java
@@ -5,6 +5,7 @@ import java.util.Arrays;
 import java.util.Iterator;
 import java.util.List;
 
+import mage.MageObject;
 import mage.abilities.Ability;
 import mage.abilities.keyword.PartnerWithAbility;
 import mage.cards.Card;
@@ -143,6 +144,15 @@ public class BoosterGenerationTest extends MageTestBase {
         assertTrue(allCards.stream().anyMatch(card -> card.getCardType().contains(CardType.LAND) && card.getRarity().equals(Rarity.COMMON)));
     }
 
+    @Test
+    public void testWarOfTheSpark_EveryBoosterContainsPlaneswalker() {
+        for (int i = 0; i < 10; i++) {
+            List<Card> booster = WarOfTheSpark.getInstance().createBooster();
+            // check that booster contains a planeswalker
+            assertTrue(booster.stream().anyMatch(MageObject::isPlaneswalker));
+        }
+    }
+
     @Test
     public void testDominaria_EveryBoosterContainsLegendaryCreature() {
         for (int i = 0; i < 10; i++) {
@@ -160,6 +170,14 @@ public class BoosterGenerationTest extends MageTestBase {
         }
     }
 
+    @Test
+    public void testModernHorizons_BoosterMustHaveOneSnowLand() {
+        for (int i = 0; i < 10; i++) {
+            List<Card> booster = ModernHorizons.getInstance().createBooster();
+            assertTrue("Modern Horizon's booster must contain 1 snow covered land", booster.stream().anyMatch(card -> card.isBasic() && card.getName().startsWith("Snow-Covered ")));
+        }
+    }
+
     @Test
     public void testMastersEditionII_BoosterMustHaveOneSnowLand() {
         for (int i = 0; i < 10; i++) {
@@ -171,7 +189,7 @@ public class BoosterGenerationTest extends MageTestBase {
     @Test
     public void testBattlebond_BoosterMustHaveOneLand() {
         for (int i = 0; i < 10; i++) {
-            List<Card> booster = Coldsnap.getInstance().createBooster();
+            List<Card> booster = Battlebond.getInstance().createBooster();
             assertTrue("battlebond's booster must contain 1 land", booster.stream().anyMatch(card -> card.isBasic() && card.isLand()));
         }
     }