diff --git a/Mage.Client/src/main/java/mage/client/deckeditor/collection/viewer/MageBook.java b/Mage.Client/src/main/java/mage/client/deckeditor/collection/viewer/MageBook.java
index 432daf5d0a..72f0f83d5f 100644
--- a/Mage.Client/src/main/java/mage/client/deckeditor/collection/viewer/MageBook.java
+++ b/Mage.Client/src/main/java/mage/client/deckeditor/collection/viewer/MageBook.java
@@ -32,8 +32,11 @@ import mage.cards.Card;
 import mage.cards.CardDimensions;
 import mage.cards.MageCard;
 import mage.client.MageFrame;
+import mage.cards.CardImpl;
+import mage.cards.repository.CardCriteria;
+import mage.cards.repository.CardInfo;
+import mage.cards.repository.CardRepository;
 import mage.client.cards.BigCard;
-import mage.client.cards.CardsStorage;
 import mage.client.components.HoverButton;
 import mage.client.plugins.impl.Plugins;
 import mage.client.util.AudioManager;
@@ -49,11 +52,16 @@ import org.mage.card.arcane.ManaSymbols;
 
 import javax.imageio.ImageIO;
 import javax.swing.*;
-import java.awt.*;
+import java.awt.BorderLayout;
+import java.awt.Color;
+import java.awt.Dimension;
+import java.awt.Image;
+import java.awt.Rectangle;
 import java.awt.image.BufferedImage;
 import java.io.FileNotFoundException;
 import java.io.InputStream;
 import java.util.ArrayList;
+import java.util.List;
 import java.util.UUID;
 
 /**
@@ -209,13 +217,14 @@ public class MageBook extends JComponent {
         jLayeredPane.removeAll();
         addLeftRightPageButtons();
 
-        java.util.List<Card> cards = getCards(currentPage, currentSet);
+        List<CardInfo> cards = getCards(currentPage, currentSet);
         int size = cards.size();
 
         Rectangle rectangle = new Rectangle();
         rectangle.translate(OFFSET_X, OFFSET_Y);
         for (int i = 0; i < Math.min(conf.CARDS_PER_PAGE / 2, size); i++) {
-            addCard(new CardView(cards.get(i)), bigCard, null, rectangle);
+            Card card = CardImpl.createCard(cards.get(i).getClassName());
+            addCard(new CardView(card), bigCard, null, rectangle);
             rectangle = CardPosition.translatePosition(i, rectangle, conf);
         }
 
@@ -225,7 +234,8 @@ public class MageBook extends JComponent {
 
         rectangle.setLocation(second_page_x, OFFSET_Y);
         for (int i = conf.CARDS_PER_PAGE / 2; i < Math.min(conf.CARDS_PER_PAGE, size); i++) {
-            addCard(new CardView(cards.get(i)), bigCard, null, rectangle);
+            Card card = CardImpl.createCard(cards.get(i).getClassName());
+            addCard(new CardView(card), bigCard, null, rectangle);
             rectangle = CardPosition.translatePosition(i - conf.CARDS_PER_PAGE / 2, rectangle, conf);
         }
 
@@ -252,10 +262,10 @@ public class MageBook extends JComponent {
         jLayeredPane.add(label);
     }
 
-    private java.util.List<Card> getCards(int page, String set) {
-        int start = page * conf.CARDS_PER_PAGE;
-        int end = (page + 1) * conf.CARDS_PER_PAGE;
-        java.util.List<Card> cards = CardsStorage.getAllCards(start, end, currentSet, false);
+    private List<CardInfo> getCards(int page, String set) {
+        CardCriteria criteria = new CardCriteria();
+        criteria.setCodes(set).start((long) page * conf.CARDS_PER_PAGE).count((long) conf.CARDS_PER_PAGE + 1);
+        List<CardInfo> cards = CardRepository.instance.findCards(criteria);
         if (cards.size() > conf.CARDS_PER_PAGE) {
             pageRight.setVisible(true);
         }
@@ -288,7 +298,7 @@ public class MageBook extends JComponent {
         this.setsToDisplay = ConstructedFormats.getSetsByFormat(format);
         if (this.setsToDisplay.isEmpty()) {
             // display all
-            this.setsToDisplay = CardsStorage.getSetCodes();
+            this.setsToDisplay = CardRepository.instance.getSetCodes();
         }
         addSetTabs();
         tabs.get(0).execute();
diff --git a/Mage.Client/src/main/java/mage/client/util/sets/ConstructedFormats.java b/Mage.Client/src/main/java/mage/client/util/sets/ConstructedFormats.java
index 4a801cecf5..7246f8ae74 100644
--- a/Mage.Client/src/main/java/mage/client/util/sets/ConstructedFormats.java
+++ b/Mage.Client/src/main/java/mage/client/util/sets/ConstructedFormats.java
@@ -6,7 +6,7 @@ import java.util.Date;
 import java.util.GregorianCalendar;
 import java.util.List;
 import mage.cards.ExpansionSet;
-import mage.client.cards.CardsStorage;
+import mage.cards.repository.CardRepository;
 import mage.sets.Sets;
 
 /**
@@ -344,10 +344,9 @@ public class ConstructedFormats {
     }
 
     private static void buildLists() {
-        
-        for (String setCode : CardsStorage.getSetCodes()) {
+        for (String setCode : CardRepository.instance.getSetCodes()) {
             ExpansionSet set = Sets.findSet(setCode);
-        
+
             if (set.getReleaseDate().after(standardDate)) {
                 standard.add(set.getCode());
             }
@@ -359,7 +358,7 @@ public class ConstructedFormats {
             }
         }
     }
-    
+
     private static final List<String> standard = new ArrayList<String>();
     private static final Date standardDate = new GregorianCalendar(2011, 9, 29).getTime();
 
diff --git a/Mage.Client/src/main/java/org/mage/card/arcane/ManaSymbols.java b/Mage.Client/src/main/java/org/mage/card/arcane/ManaSymbols.java
index b5c6f8210c..363daebc43 100644
--- a/Mage.Client/src/main/java/org/mage/card/arcane/ManaSymbols.java
+++ b/Mage.Client/src/main/java/org/mage/card/arcane/ManaSymbols.java
@@ -1,6 +1,6 @@
 package org.mage.card.arcane;
 
-import mage.client.cards.CardsStorage;
+import mage.cards.repository.CardRepository;
 import mage.client.util.ImageHelper;
 import mage.client.util.gui.BufferedImageBuilder;
 import org.apache.log4j.Logger;
@@ -47,7 +47,8 @@ public class ManaSymbols {
             } catch (Exception e) {
             }
         }
-        for (String set : CardsStorage.getSetCodes()) {
+        List<String> setCodes = CardRepository.instance.getSetCodes();
+        for (String set : setCodes) {
             String _set = set.equals("CON") ? "CFX" : set;
             File file = new File(Constants.RESOURCE_PATH_SET + _set + "-C.jpg");
             try {
@@ -104,7 +105,7 @@ public class ManaSymbols {
         }
 
         File file;
-        for (String set : CardsStorage.getSetCodes()) {
+        for (String set : CardRepository.instance.getSetCodes()) {
             file = new File(Constants.RESOURCE_PATH_SET_SMALL);
             if (!file.exists()) {
                 break;