diff --git a/core/src/cz/nic/tablexia/screen/gamemenu/GameMenuAssets.java b/core/src/cz/nic/tablexia/screen/gamemenu/GameMenuAssets.java
index 9b199a11955fee7a3027c978c3634ad95ab68709..10b6ad395fd98e73330d46baf20dc43337f91607 100644
--- a/core/src/cz/nic/tablexia/screen/gamemenu/GameMenuAssets.java
+++ b/core/src/cz/nic/tablexia/screen/gamemenu/GameMenuAssets.java
@@ -11,59 +11,10 @@ import cz.nic.tablexia.menu.game.GameMenuDefinition;
  * Edited by Drahomir Karchnak
  */
 public final class GameMenuAssets {
-
     private GameMenuAssets() {
     }
 
-    public enum GameMenuLayers {
-        FORE,
-        MID,
-        BACK,
-        TITLE,
-        STARTBUTTON,
-        STARTBUTTON_PRESSED
-    }
-
-    public enum GameBasePaths {
-        GAME_ROBBERY(1, "bankovniloupez"),
-        GAME_PURSUIT(2, "pronasledovani"),
-        GAME_KIDNAPPING(3, "unos"),
-        GAME_NIGHT_WATCH(4, "nocnisledovani"),
-        GAME_SHOOTING_RANGE(5, "strelnice"),
-        GAME_IN_THE_DARKNESS(6, "potme");
-
-        private int id;
-        private String path;
-
-        GameBasePaths(int id, String path) {
-            this.id = id;
-            this.path = path;
-        }
-
-        public int getId() {
-            return id;
-        }
-
-        public String getPath() {
-            return path;
-        }
-
-
-        /**
-         * Gets path to base assets according to game's id
-         * @param id
-         * @return path or null, if game with this id doesn't exist
-         */
-        public static String getPathById(int id) {
-            for(GameBasePaths game : GameBasePaths.values()) {
-                if(game.getId() == id)
-                    return game.getPath();
-            }
-            return null;
-        }
-    }
-
-    private static final String GFX_PATH = "gfx/";
+    public static final String GFX_PATH = "gfx/";
 
     public static final String OFFICE               = GFX_PATH + "office";
     public static final String OFFICE_HALLOFFAME    = GFX_PATH + "office_halloffame";
@@ -89,48 +40,4 @@ public final class GameMenuAssets {
 
     public static final String WALL_MID  = GFX_PATH + "wall_mid";
     public static final String WALL_BACK = GFX_PATH + "wall_back";
-
-    public static List<String> textures = new ArrayList<String>();
-
-    static {
-        textures.add(OFFICE);
-        textures.add(OFFICE_CLICKMAP);
-        textures.add(DESK);
-        textures.add(OFFICE_HELP);
-        textures.add(VIGNETTE);
-        textures.add(OVERLAY);
-
-        textures.add(DIFF_BAR);
-        textures.add(DIFF_THUMB);
-        textures.add(DIFF_THUMB_EASY);
-        textures.add(DIFF_THUMB_HARD);
-        textures.add(DIFF_THUMB_MEDIUM);
-
-        textures.add(ENCYCLOPEDIA_PRESSED);
-        textures.add(HALLOFFAME_PRESSED);
-        textures.add(STATISTICS_PRESSED);
-        textures.add(DOOR_PRESSED);
-        textures.add(PROFILE_PRESSED);
-
-        textures.add(HELP_BUTTON_PRESSED);
-        textures.add(HELP_BUTTON_RELEASE);
-
-        textures.add(WALL_MID);
-        textures.add(WALL_BACK);
-
-        for (GameMenuDefinition gd : GameMenuDefinition.values()) {
-            for (GameMenuLayers gml : GameMenuLayers.values()) {
-                textures.add(getResourcePath(gd.getGameDefinition(), gml));
-            }
-        }
-    }
-
-    public static String getResourcePath(GameDefinition game, GameMenuLayers layer) {
-        String gameBasePath = GameBasePaths.getPathById(game.getGameNumber());
-
-        if(gameBasePath == null)
-            throw new IllegalArgumentException("Couldn't find game base assets for ID: " + game.getGameNumber());
-        else
-            return GFX_PATH + gameBasePath + "_" + layer.name().toLowerCase();
-    }
 }
\ No newline at end of file
diff --git a/core/src/cz/nic/tablexia/screen/gamemenu/GameMenuScreen.java b/core/src/cz/nic/tablexia/screen/gamemenu/GameMenuScreen.java
index 3a58299fb697e452a943e02790d59e9072ce8738..0f2946f0c0b382c83550757971ed675010286a52 100644
--- a/core/src/cz/nic/tablexia/screen/gamemenu/GameMenuScreen.java
+++ b/core/src/cz/nic/tablexia/screen/gamemenu/GameMenuScreen.java
@@ -30,35 +30,62 @@ import cz.nic.tablexia.util.ui.PagedScrollPane;
 public class GameMenuScreen extends AbstractTablexiaScreen<int[][]> {
     public static final String SCREEN_STATE_PAGE_NUMBER = "pageNumber";
 
+    public enum GameMenuLayers {
+        FORE,
+        MID,
+        BACK,
+        TITLE,
+        STARTBUTTON,
+        STARTBUTTON_PRESSED
+    }
+
     public enum GameMenuPageDefinition {
+        OFFICE_PAGE(0, null, null),
+        ROBBERY_PAGE(1, GameDefinition.ROBBERY, "bankovniloupez"),
+        PURSUIT_PAGE(2, GameDefinition.PURSUIT, "pronasledovani"),
+        KIDNAPPING_PAGE(3, GameDefinition.KIDNAPPING, "unos"),
+        NIGH_WATCH_PAGE(4, GameDefinition.NIGHT_WATCH, "nocnisledovani"),
+        SHOOTING_RANGE_PAGE(5, GameDefinition.SHOOTING_RANGE, "strelnice"),
+        IN_THE_DARKNESS_PAGE(6, GameDefinition.IN_THE_DARKNESS, "potme");
 
-        OFFICE_PAGE(0, null),
-        ROBBERY_PAGE(1, GameDefinition.ROBBERY),
-        PURSUIT_PAGE(2, GameDefinition.PURSUIT),
-        KIDNAPPING_PAGE(3, GameDefinition.KIDNAPPING),
-        NIGH_WATCH_PAGE(4, GameDefinition.NIGHT_WATCH),
-        SHOOTING_RANGE_PAGE(5, GameDefinition.SHOOTING_RANGE),
-        IN_THE_DARKNESS_PAGE(6, GameDefinition.IN_THE_DARKNESS);
+        private int             pageNumber;
+        private GameDefinition  gameDefinition;
 
-        private int            pageNumber;
-        private GameDefinition gameDefinition;
+        //base path to assets without postfix(layer) like mid, back, title etc...
+        private String          baseAssetsPath;
 
-        GameMenuPageDefinition(int pageNumber, GameDefinition gameDefinition) {
+        GameMenuPageDefinition(int pageNumber, GameDefinition gameDefinition, String baseAssetsPath) {
             this.pageNumber = pageNumber;
             this.gameDefinition = gameDefinition;
+            this.baseAssetsPath = baseAssetsPath;
+        }
+
+        public String getBaseAssetsPath() {
+            return baseAssetsPath;
         }
 
         public int getPageNumber() {
             return pageNumber;
         }
 
+        public static String getResourcePath(GameDefinition gameDefinition, GameMenuLayers gameMenuLayer) {
+            for(GameMenuPageDefinition game : GameMenuPageDefinition.values()) {
+                if(gameDefinition.getGameNumber() == game.getPageNumber()) {
+                       return GameMenuAssets.GFX_PATH + game.getBaseAssetsPath() + "_" + gameMenuLayer.name().toLowerCase();
+                }
+            }
+
+            throw new IllegalArgumentException("Couldn't find game base assets for game definition: " + gameDefinition.name());
+        }
+
         public static GameMenuPageDefinition getGameMenuPageForNumber(int gameMenuPageNumber) {
             for (GameMenuPageDefinition gameMenuPageDefinition : GameMenuPageDefinition.values()) {
                 if (gameMenuPageDefinition.getPageNumber() == gameMenuPageNumber) {
                     return gameMenuPageDefinition;
                 }
             }
-            return null;
+
+            throw new IllegalArgumentException("Couldn't find game definition for page number: " + gameMenuPageNumber);
         }
 
         public static GameMenuPageDefinition getGameMenuPageForGameDefinition(GameDefinition gameDefinition) {
@@ -67,7 +94,7 @@ public class GameMenuScreen extends AbstractTablexiaScreen<int[][]> {
                     return gameMenuPageDefinition;
                 }
             }
-            return null;
+            throw new IllegalArgumentException("Couldn't find game page number for game definition: " + gameDefinition.name());
         }
     }
 
diff --git a/core/src/cz/nic/tablexia/screen/gamemenu/pages/GameMenuPage.java b/core/src/cz/nic/tablexia/screen/gamemenu/pages/GameMenuPage.java
index bf61a9723f081db370b5fd5392ca03eef157d4b2..4bcd8a47dc197f44290c070b1b39f8c3a9c5c531 100644
--- a/core/src/cz/nic/tablexia/screen/gamemenu/pages/GameMenuPage.java
+++ b/core/src/cz/nic/tablexia/screen/gamemenu/pages/GameMenuPage.java
@@ -104,7 +104,7 @@ public class GameMenuPage extends MenuPage {
      */
     public void prepareTitle() {
         //Resources
-        TextureRegion title = getScreen().getScreenTextureRegion(GameMenuAssets.getResourcePath(game, GameMenuAssets.GameMenuLayers.TITLE));
+        TextureRegion title = getScreen().getScreenTextureRegion(GameMenuScreen.GameMenuPageDefinition.getResourcePath(game, GameMenuScreen.GameMenuLayers.TITLE));
         final Image titleImage = new Image(title);
 
         //Size
@@ -127,7 +127,7 @@ public class GameMenuPage extends MenuPage {
     public void prepareStartButton() {
         // Prepare Start Button UP/Released
             // Resources
-            TextureRegion start = getScreen().getScreenTextureRegion(GameMenuAssets.getResourcePath(game, GameMenuAssets.GameMenuLayers.STARTBUTTON));
+            TextureRegion start = getScreen().getScreenTextureRegion(GameMenuScreen.GameMenuPageDefinition.getResourcePath(game, GameMenuScreen.GameMenuLayers.STARTBUTTON));
             final Image startButton = new Image(start);
 
             // Size
@@ -149,7 +149,7 @@ public class GameMenuPage extends MenuPage {
 
         //Prepare Strat Button Down/Pressed
             // Resources
-            TextureRegion startDown = getScreen().getScreenTextureRegion(GameMenuAssets.getResourcePath(game, GameMenuAssets.GameMenuLayers.STARTBUTTON_PRESSED));
+            TextureRegion startDown = getScreen().getScreenTextureRegion(GameMenuScreen.GameMenuPageDefinition.getResourcePath(game, GameMenuScreen.GameMenuLayers.STARTBUTTON_PRESSED));
             final Image startDownButton = new Image(startDown);
 
             //Size
@@ -375,7 +375,7 @@ public class GameMenuPage extends MenuPage {
         Color color = new Color(this.getColor().r, this.getColor().g, this.getColor().b, this.getColor().a * parentAlpha);
         batch.setColor(color);
 
-        TextureRegion back = getScreen().getScreenTextureRegion(GameMenuAssets.getResourcePath(game, GameMenuAssets.GameMenuLayers.BACK));
+        TextureRegion back = getScreen().getScreenTextureRegion(GameMenuScreen.GameMenuPageDefinition.getResourcePath(game, GameMenuScreen.GameMenuLayers.BACK));
         batch.disableBlending();
 
         //Just adjusting sourceX coordinate to get animated background/sky
@@ -395,7 +395,7 @@ public class GameMenuPage extends MenuPage {
         batch.enableBlending();
 
         // Mid layer travels the same speed
-        batch.draw( getScreen().getScreenTextureRegion(GameMenuAssets.getResourcePath(game, GameMenuAssets.GameMenuLayers.MID)),
+        batch.draw( getScreen().getScreenTextureRegion(GameMenuScreen.GameMenuPageDefinition.getResourcePath(game, GameMenuScreen.GameMenuLayers.MID)),
                     getScreen().getSceneLeftX() + getX(),
                     getScreen().getSceneOuterBottomY()  - pagedScrollPaneOffsetY,
                     getScreen().getSceneWidth(),
@@ -404,7 +404,7 @@ public class GameMenuPage extends MenuPage {
         batch.enableBlending();
 
         // Foreground layer travels faster and could be wider than screen. Needs to be clipped
-        batch.draw( getScreen().getScreenTextureRegion(GameMenuAssets.getResourcePath(game, GameMenuAssets.GameMenuLayers.FORE)),
+        batch.draw( getScreen().getScreenTextureRegion(GameMenuScreen.GameMenuPageDefinition.getResourcePath(game, GameMenuScreen.GameMenuLayers.FORE)),
                     getScreen().getSceneLeftX() + getX() + (scrollXOffset / 2),
                     getScreen().getSceneOuterBottomY() - pagedScrollPaneOffsetY,
                     getScreen().getSceneWidth(),