diff --git a/core/src/cz/nic/tablexia/Tablexia.java b/core/src/cz/nic/tablexia/Tablexia.java
index 7bb3db82f3249019b2f2c6b64e63a19f742fc962..51e464d476815271dbde9690ad740dcc8d545af2 100644
--- a/core/src/cz/nic/tablexia/Tablexia.java
+++ b/core/src/cz/nic/tablexia/Tablexia.java
@@ -302,7 +302,7 @@ public class Tablexia extends TablexiaApplication {
 
             createButton(ERROR_BUTTON_BLUE_UNPRESSED_INTERNAL,
                          ERROR_BUTTON_BLUE_PRESSED_INTERNAL,
-                         ApplicationTextManager.SYSTEM_RETRY,
+                         ApplicationTextManager.ApplicationTextsAssets.SYSTEM_RETRY,
                          new ClickListener() {
 
                 @Override
@@ -315,7 +315,7 @@ public class Tablexia extends TablexiaApplication {
 
             createButton(ERROR_BUTTON_RED_UNPRESSED_INTERNAL,
                          ERROR_BUTTON_RED_PRESSED_INTERNAL,
-                         ApplicationTextManager.SYSTEM_EXIT,
+                         ApplicationTextManager.ApplicationTextsAssets.SYSTEM_EXIT,
                          new ClickListener() {
 
                 @Override
diff --git a/core/src/cz/nic/tablexia/TablexiaSettings.java b/core/src/cz/nic/tablexia/TablexiaSettings.java
index 82163b12c22f4b93af262bfb7787ba9488dc246d..779a0f8203124979597e68d5bb5ab22d42027d37 100644
--- a/core/src/cz/nic/tablexia/TablexiaSettings.java
+++ b/core/src/cz/nic/tablexia/TablexiaSettings.java
@@ -226,10 +226,10 @@ public class TablexiaSettings {
 
     public enum LocaleDefinition {
 
-        SYSTEM(null, "system", ApplicationTextManager.LANGUAGE_SYSTEM, null),
-        cs_CZ(new Locale("cs", "CZ"), "cs_CZ", ApplicationTextManager.LANGUAGE_CZECH, "ěřťůšďžčňĚŘŤŮŠĎŽČŇ…"),
-        sk_SK(new Locale("sk", "SK"), "sk_SK", ApplicationTextManager.LANGUAGE_SLOVAK, "Ľľä…"),
-        de_DE(new Locale("de", "DE"), "de_DE", ApplicationTextManager.LANGUAGE_GERMAN, "…");
+        SYSTEM  (null,                      "system",   ApplicationTextManager.ApplicationTextsAssets.LANGUAGE_SYSTEM,  null),
+        cs_CZ   (new Locale("cs", "CZ"),    "cs_CZ",    ApplicationTextManager.ApplicationTextsAssets.LANGUAGE_CZECH,   "ěřťůšďžčňĚŘŤŮŠĎŽČŇ…"),
+        sk_SK   (new Locale("sk", "SK"),    "sk_SK",    ApplicationTextManager.ApplicationTextsAssets.LANGUAGE_SLOVAK,  "Ľľä…"),
+        de_DE   (new Locale("de", "DE"),    "de_DE",    ApplicationTextManager.ApplicationTextsAssets.LANGUAGE_GERMAN,  "…");
 
         public final static LocaleDefinition DEFAULT_LOCALE = LocaleDefinition.cs_CZ;
         private final static LocaleDefinition FALLBACK_VARIANT = LocaleDefinition.SYSTEM;
diff --git a/core/src/cz/nic/tablexia/game/GameDefinition.java b/core/src/cz/nic/tablexia/game/GameDefinition.java
index d01c21811acf11ae4ab6d0267c07cba2bacafbe6..7321641c2f5759745af6026a24812a2b2500bade 100644
--- a/core/src/cz/nic/tablexia/game/GameDefinition.java
+++ b/core/src/cz/nic/tablexia/game/GameDefinition.java
@@ -1,11 +1,5 @@
 package cz.nic.tablexia.game;
 
-import com.badlogic.gdx.scenes.scene2d.Group;
-
-import cz.nic.tablexia.Tablexia;
-import cz.nic.tablexia.TablexiaApplication;
-import cz.nic.tablexia.bus.ApplicationBus;
-import cz.nic.tablexia.bus.ApplicationBus.ApplicationEvent;
 import cz.nic.tablexia.game.games.in_the_darkness.InTheDarknessGame;
 import cz.nic.tablexia.game.games.kidnapping.KidnappingGame;
 import cz.nic.tablexia.game.games.night_watch.NightWatchGame;
@@ -13,50 +7,34 @@ import cz.nic.tablexia.game.games.pursuit.PursuitGame;
 import cz.nic.tablexia.game.games.robbery.RobberyGame;
 import cz.nic.tablexia.game.games.shooting_range.ShootingRangeGame;
 import cz.nic.tablexia.game.games.shooting_range.tools.ShootingRangeResultResolver;
-import cz.nic.tablexia.loader.application.ApplicationTextManager;
-import cz.nic.tablexia.menu.AbstractMenu;
-import cz.nic.tablexia.menu.IMenuItem;
-import cz.nic.tablexia.menu.game.GameMenuItemGroup;
 import cz.nic.tablexia.model.game.Game;
-import cz.nic.tablexia.screen.gamemenu.GameMenuScreen;
-import cz.nic.tablexia.screen.gamemenu.event.ShowGameMenuPageEvent;
 
 
-public enum GameDefinition implements ApplicationEvent, IMenuItem {
+public enum GameDefinition {
 
-	ROBBERY(1, "game_robbery_title", "game_robbery_description", RobberyGame.class, false, new RobberyGame.GameResultResolver()),
-	PURSUIT(2, "game_pursuit_title", "game_pursuit_description", PursuitGame.class, false, new PursuitGame.GameResultResolver()),
-	KIDNAPPING(3, "game_kidnapping_title", "game_kidnapping_description", KidnappingGame.class, false, new GameResultResolver() {
+	ROBBERY			(1, RobberyGame.class, 			false, 	new RobberyGame.GameResultResolver()),
+	PURSUIT			(2, PursuitGame.class, 			false, 	new PursuitGame.GameResultResolver()),
+	KIDNAPPING		(3, KidnappingGame.class,		false, new GameResultResolver() {
 		@Override
 		public AbstractTablexiaGame.GameResult getGameResult(Game game) {
 			return AbstractTablexiaGame.GameResult.NO_STAR;
 		}
 	}),
-    NIGHT_WATCH(4, "game_night_watch_title", "game_night_watch_description", NightWatchGame.class, false,new NightWatchGame.GameResultResolver()),
-	SHOOTING_RANGE(5, "game_shooting_range_title", "game_shooting_range_description", ShootingRangeGame.class, false, new ShootingRangeResultResolver()),
-	IN_THE_DARKNESS(6, "game_in_the_darkness_title", "game_in_the_darkness_description", InTheDarknessGame.class, true, new InTheDarknessGame.GameResultResolver());
+    NIGHT_WATCH		(4, NightWatchGame.class, 		false,	new NightWatchGame.GameResultResolver()),
+	SHOOTING_RANGE	(5, ShootingRangeGame.class,	false,	new ShootingRangeResultResolver()),
+	IN_THE_DARKNESS	(6, InTheDarknessGame.class,	true,	new InTheDarknessGame.GameResultResolver());
 
 	public interface GameResultResolver {
 		AbstractTablexiaGame.GameResult getGameResult(Game game);
 	}
 
-	private static final Class<GameMenuItemGroup> MENU_ITEM_GROUP_CLASS = GameMenuItemGroup.class;
-
 	private int                                      gameNumber;
-	private String                                   menuTextKey;
-	private String 									 descriptionResource;
 	private Class<? extends AbstractTablexiaGame<?>> screenClass;
 	private boolean                                  hasTutorial;
 	private GameResultResolver                       gameResultResolver;
 
-	public static GameDefinition[] getActiveGames() {
-		return new GameDefinition[]{ROBBERY, PURSUIT, KIDNAPPING, NIGHT_WATCH, SHOOTING_RANGE, IN_THE_DARKNESS};
-	}
-
-	GameDefinition(int gameNumber, String nameResource, String descriptionResource, Class<? extends AbstractTablexiaGame<?>> screenClass, boolean hasTutorial, GameResultResolver gameResultResolver) {
+	GameDefinition(int gameNumber, Class<? extends AbstractTablexiaGame<?>> screenClass, boolean hasTutorial, GameResultResolver gameResultResolver) {
 		this.gameNumber = gameNumber;
-		this.menuTextKey = nameResource;
-		this.descriptionResource = descriptionResource;
 		this.screenClass = screenClass;
 		this.hasTutorial = hasTutorial;
 		this.gameResultResolver = gameResultResolver;
@@ -66,26 +44,6 @@ public enum GameDefinition implements ApplicationEvent, IMenuItem {
 		return gameNumber;
 	}
 
-	@Override
-	public String getTitle() {
-		return ApplicationTextManager.getInstance().getResult().get(menuTextKey);
-	}
-
-	@Override
-	public String getDescription() {
-		return ApplicationTextManager.getInstance().getResult().get(descriptionResource);
-	}
-
-	@Override
-	public String[] getIcons() {
-		return null;
-	}
-
-	@Override
-	public Class<? extends Group> getItemGroupClass() {
-		return MENU_ITEM_GROUP_CLASS;
-	}
-
 	public Class<? extends AbstractTablexiaGame<?>> getScreenClass() {
 		return screenClass;
 	}
@@ -94,28 +52,6 @@ public enum GameDefinition implements ApplicationEvent, IMenuItem {
 		return hasTutorial;
 	}
 
-	@Override
-	public void performAction() {
-		ApplicationBus.getInstance().publishAsync(this);
-		if (TablexiaApplication.getActualScreenClass() == GameMenuScreen.class) {
-			ApplicationBus.getInstance().publishAsync(new ShowGameMenuPageEvent(GameDefinition.this, true));
-		} else {
-			ApplicationBus.getInstance().publishAsync(new Tablexia.ChangeScreenEvent(GameMenuScreen.class,
-													  TablexiaApplication.ScreenTransaction.FADE,
-													  GameMenuScreen.createScreenState(GameMenuScreen.GameMenuPageDefinition.getGameMenuPageForGameDefinition(this))));
-		}
-	}
-
-	@Override
-	public AbstractMenu.MenuAction getMenuAction() {
-		return AbstractMenu.MenuAction.CLOSE;
-	}
-
-	@Override
-	public IMenuItem[] getSubmenu() {
-		return null;
-	}
-
 	public AbstractTablexiaGame.GameResult getGameResult(Game game) {
 		return gameResultResolver.getGameResult(game);
 	}
diff --git a/core/src/cz/nic/tablexia/loader/application/ApplicationTextManager.java b/core/src/cz/nic/tablexia/loader/application/ApplicationTextManager.java
index 43f6257e7cc224a8083239b356cc9d14855b4795..e38647f078c798d61d92da8321d28598a02a1155 100644
--- a/core/src/cz/nic/tablexia/loader/application/ApplicationTextManager.java
+++ b/core/src/cz/nic/tablexia/loader/application/ApplicationTextManager.java
@@ -19,22 +19,37 @@ import cz.nic.tablexia.loader.TablexiaDataManager;
 public class ApplicationTextManager extends TablexiaDataManager<I18NBundle> implements IApplicationLoader {
 
     public static final class ApplicationTextsAssets {
+
         public static final String VICTORYSCREEN_BUTTON_REPLAY      = "victoryscreen_button_replay";
         public static final String VICTORYSCREEN_BUTTON_CHANGEGAME  = "victoryscreen_button_changegame";
+
 		public static final String USERMENU_NEWUSER  				= "usermenu_newuser";
-    }
-	
-	private static final String APPLICATION_TEXT_RESOURCE_FILE = "text/application/application";
 
-	public static final String SYSTEM_EXIT 			= "system_exit";
-	public static final String SYSTEM_RETRY			= "system_retry";
+		public static final String SYSTEM_EXIT 						= "system_exit";
+		public static final String SYSTEM_RETRY						= "system_retry";
 
-	public static final String ZIPASSETLOADER_ERROR	= "zipassetloader_error";
+		public static final String ZIPASSETLOADER_ERROR				= "zipassetloader_error";
 
-    public static final String LANGUAGE_SYSTEM 		= "language_system";
-    public static final String LANGUAGE_CZECH  		= "language_czech";
-    public static final String LANGUAGE_SLOVAK 		= "language_slovak";
-	public static final String LANGUAGE_GERMAN 		= "language_german";
+		public static final String LANGUAGE_SYSTEM 					= "language_system";
+		public static final String LANGUAGE_CZECH  					= "language_czech";
+		public static final String LANGUAGE_SLOVAK 					= "language_slovak";
+		public static final String LANGUAGE_GERMAN 					= "language_german";
+
+		public static final String GAME_ROBBERY_TITLE 				= "game_robbery_title";
+		public static final String GAME_ROBBERY_DESCRIPTION			= "game_robbery_description";
+		public static final String GAME_PURSUIT_TITLE 				= "game_pursuit_title";
+		public static final String GAME_PURSUIT_DESCRIPTION			= "game_pursuit_description";
+		public static final String GAME_KIDNAPPING_TITLE 			= "game_kidnapping_title";
+		public static final String GAME_KIDNAPPING_DESCRIPTION		= "game_kidnapping_description";
+		public static final String GAME_NIGHT_WATCH_TITLE 			= "game_night_watch_title";
+		public static final String GAME_NIGHT_WATCH_DESCRIPTION		= "game_night_watch_description";
+		public static final String GAME_SHOOTING_RANGE_TITLE 		= "game_shooting_range_title";
+		public static final String GAME_SHOOTING_RANGE_DESCRIPTION	= "game_shooting_range_description";
+		public static final String GAME_IN_THE_DARKNESS_TITLE 		= "game_in_the_darkness_title";
+		public static final String GAME_IN_THE_DARKNESS_DESCRIPTION	= "game_in_the_darkness_description";
+    }
+	
+	private static final String APPLICATION_TEXT_RESOURCE_FILE = "text/application/application";
 
 	private static class ApplicationTextLoader implements AsyncTask<I18NBundle> {
 
diff --git a/core/src/cz/nic/tablexia/loader/zip/ZipAssetLoader.java b/core/src/cz/nic/tablexia/loader/zip/ZipAssetLoader.java
index a5468a95288b8344d217900a33fd4331f85f4754..ae89753b2994c5a28d486e4bfd8e58013ddffb38 100644
--- a/core/src/cz/nic/tablexia/loader/zip/ZipAssetLoader.java
+++ b/core/src/cz/nic/tablexia/loader/zip/ZipAssetLoader.java
@@ -395,7 +395,7 @@ public class ZipAssetLoader extends TablexiaDataManager<Void> implements IApplic
     }
 
     public String getError() {
-        return error ? ApplicationTextManager.getInstance().getText(ApplicationTextManager.ZIPASSETLOADER_ERROR) : null;
+        return error ? ApplicationTextManager.getInstance().getText(ApplicationTextManager.ApplicationTextsAssets.ZIPASSETLOADER_ERROR) : null;
     }
 	
 }
\ No newline at end of file
diff --git a/core/src/cz/nic/tablexia/menu/game/GameMenuDefinition.java b/core/src/cz/nic/tablexia/menu/game/GameMenuDefinition.java
new file mode 100644
index 0000000000000000000000000000000000000000..bdae7934e11a4d811120f013034e4ec68d752b2b
--- /dev/null
+++ b/core/src/cz/nic/tablexia/menu/game/GameMenuDefinition.java
@@ -0,0 +1,84 @@
+package cz.nic.tablexia.menu.game;
+
+import com.badlogic.gdx.scenes.scene2d.Group;
+
+import cz.nic.tablexia.Tablexia;
+import cz.nic.tablexia.TablexiaApplication;
+import cz.nic.tablexia.bus.ApplicationBus;
+import cz.nic.tablexia.game.GameDefinition;
+import cz.nic.tablexia.loader.application.ApplicationTextManager;
+import cz.nic.tablexia.menu.AbstractMenu;
+import cz.nic.tablexia.menu.IMenuItem;
+import cz.nic.tablexia.screen.gamemenu.GameMenuScreen;
+import cz.nic.tablexia.screen.gamemenu.event.ShowGameMenuPageEvent;
+
+/**
+ * Created by Matyáš Latner.
+ */
+public enum GameMenuDefinition implements ApplicationBus.ApplicationEvent, IMenuItem {
+
+    ROBBERY         (GameDefinition.ROBBERY,            ApplicationTextManager.ApplicationTextsAssets.GAME_ROBBERY_TITLE, 			ApplicationTextManager.ApplicationTextsAssets.GAME_ROBBERY_DESCRIPTION),
+    PURSUIT         (GameDefinition.PURSUIT,            ApplicationTextManager.ApplicationTextsAssets.GAME_PURSUIT_TITLE, 			ApplicationTextManager.ApplicationTextsAssets.GAME_PURSUIT_DESCRIPTION),
+    KIDNAPPING      (GameDefinition.KIDNAPPING,         ApplicationTextManager.ApplicationTextsAssets.GAME_KIDNAPPING_TITLE, 		ApplicationTextManager.ApplicationTextsAssets.GAME_KIDNAPPING_DESCRIPTION),
+    NIGHT_WATCH     (GameDefinition.NIGHT_WATCH,        ApplicationTextManager.ApplicationTextsAssets.GAME_NIGHT_WATCH_TITLE, 		ApplicationTextManager.ApplicationTextsAssets.GAME_NIGHT_WATCH_DESCRIPTION),
+    SHOOTING_RANGE  (GameDefinition.SHOOTING_RANGE,     ApplicationTextManager.ApplicationTextsAssets.GAME_SHOOTING_RANGE_TITLE, 	ApplicationTextManager.ApplicationTextsAssets.GAME_SHOOTING_RANGE_DESCRIPTION),
+    IN_THE_DARKNESS (GameDefinition.IN_THE_DARKNESS,    ApplicationTextManager.ApplicationTextsAssets.GAME_IN_THE_DARKNESS_TITLE,	ApplicationTextManager.ApplicationTextsAssets.GAME_IN_THE_DARKNESS_DESCRIPTION);
+
+    private static final Class<GameMenuItemGroup> MENU_ITEM_GROUP_CLASS = GameMenuItemGroup.class;
+
+    private GameDefinition  gameDefinition;
+    private String          titleKey;
+    private String          descriptionKey;
+
+    GameMenuDefinition(GameDefinition gameDefinition, String titleKey, String descriptionKey){
+        this.gameDefinition = gameDefinition;
+        this.titleKey = titleKey;
+        this.descriptionKey = descriptionKey;
+    }
+
+    public GameDefinition getGameDefinition() {
+        return gameDefinition;
+    }
+
+    @Override
+    public String getTitle() {
+        return ApplicationTextManager.getInstance().getResult().get(titleKey);
+    }
+
+    @Override
+    public String getDescription() {
+        return ApplicationTextManager.getInstance().getResult().get(descriptionKey);
+    }
+
+    @Override
+    public String[] getIcons() {
+        return null;
+    }
+
+    @Override
+    public Class<? extends Group> getItemGroupClass() {
+        return MENU_ITEM_GROUP_CLASS;
+    }
+
+    @Override
+    public AbstractMenu.MenuAction getMenuAction() {
+        return AbstractMenu.MenuAction.CLOSE;
+    }
+
+    @Override
+    public IMenuItem[] getSubmenu() {
+        return null;
+    }
+
+    @Override
+    public void performAction() {
+        ApplicationBus.getInstance().publishAsync(this);
+        if (TablexiaApplication.getActualScreenClass() == GameMenuScreen.class) {
+            ApplicationBus.getInstance().publishAsync(new ShowGameMenuPageEvent(gameDefinition, true));
+        } else {
+            ApplicationBus.getInstance().publishAsync(new Tablexia.ChangeScreenEvent(GameMenuScreen.class,
+                                                                                     TablexiaApplication.ScreenTransaction.FADE,
+                                                                                     GameMenuScreen.createScreenState(GameMenuScreen.GameMenuPageDefinition.getGameMenuPageForGameDefinition(gameDefinition))));
+        }
+    }
+}
diff --git a/core/src/cz/nic/tablexia/menu/game/GameMenuItemGroup.java b/core/src/cz/nic/tablexia/menu/game/GameMenuItemGroup.java
index f4edf45ba381752b24c8e8627cb7feb441c56dce..8123379c55a514bec27a9c536f6775a5d326b924 100644
--- a/core/src/cz/nic/tablexia/menu/game/GameMenuItemGroup.java
+++ b/core/src/cz/nic/tablexia/menu/game/GameMenuItemGroup.java
@@ -51,16 +51,16 @@ public class GameMenuItemGroup extends Container<Table> {
     private final Table             layoutContainer;
     private final Image             arrowIcon;
     private final Image             restartIcon;
-    private final Cell<Image> iconCell;
+    private final Cell<Image>       iconCell;
     private final Image             highliter;
-    private NinePatchDrawable background;
+    private NinePatchDrawable       background;
     private TextureRegionDrawable   highlitedBackground;
 
     private Class<? extends AbstractTablexiaGame> abstractTablexiaGameClass;
     private GameMenuScreen.GameMenuPageDefinition gameMenuPageDefinition;
 
     public GameMenuItemGroup(IMenuItem menuItem) {
-        this.abstractTablexiaGameClass = ((GameDefinition)menuItem).getScreenClass();
+        this.abstractTablexiaGameClass = ((GameMenuDefinition)menuItem).getGameDefinition().getScreenClass();
         this.gameMenuPageDefinition = GameMenuScreen.GameMenuPageDefinition.getGameMenuPageForGameDefinition(GameDefinition.getGameDefinitionForClass(abstractTablexiaGameClass));
 
         padLeft(LEFT_PADDING);
diff --git a/core/src/cz/nic/tablexia/menu/main/MainMenuDefinition.java b/core/src/cz/nic/tablexia/menu/main/MainMenuDefinition.java
index c726609cdec230c7c40815d6066b65cec320b837..13b2e3207de73f67bfa9100ce0fcd23f08ad50b6 100644
--- a/core/src/cz/nic/tablexia/menu/main/MainMenuDefinition.java
+++ b/core/src/cz/nic/tablexia/menu/main/MainMenuDefinition.java
@@ -10,11 +10,11 @@ import cz.nic.tablexia.TablexiaApplication;
 import cz.nic.tablexia.TablexiaSettings;
 import cz.nic.tablexia.bus.ApplicationBus;
 import cz.nic.tablexia.bus.ApplicationBus.ApplicationEvent;
-import cz.nic.tablexia.game.GameDefinition;
 import cz.nic.tablexia.loader.application.ApplicationAtlasManager;
 import cz.nic.tablexia.loader.application.ApplicationTextManager;
 import cz.nic.tablexia.menu.AbstractMenu;
 import cz.nic.tablexia.menu.IMenuItem;
+import cz.nic.tablexia.menu.game.GameMenuDefinition;
 import cz.nic.tablexia.screen.about.AboutScreen;
 import cz.nic.tablexia.screen.encyclopedia.EncyclopediaScreen;
 import cz.nic.tablexia.screen.halloffame.HallOfFameScreen;
@@ -24,7 +24,7 @@ import cz.nic.tablexia.screen.viewport.ViewportDebugScreen;
 
 public enum MainMenuDefinition implements IMenuItem {
 
-	GAMES				(false, new String[]{ApplicationAtlasManager.MAINMENU_ICON_GAMES_UNPRESSED, ApplicationAtlasManager.MAINMENU_ICON_GAMES_PRESSED}, "mainmenu_games", GameDefinition.values(), null, null), // TODO open menu event
+	GAMES				(false, new String[]{ApplicationAtlasManager.MAINMENU_ICON_GAMES_UNPRESSED, ApplicationAtlasManager.MAINMENU_ICON_GAMES_PRESSED}, "mainmenu_games", GameMenuDefinition.values(), null, null), // TODO open menu event
 	HALL_OF_FAME		(false, new String[]{ApplicationAtlasManager.MAINMENU_ICON_HALLOFFAME_UNPRESSED, ApplicationAtlasManager.MAINMENU_ICON_HALLOFFAME_PRESSED}, "mainmenu_halloffame", null, AbstractMenu.MenuAction.CLOSE, new Tablexia.ChangeScreenEvent(HallOfFameScreen.class,     TablexiaApplication.ScreenTransaction.FADE)),
 	STATISTICS			(false, new String[]{ApplicationAtlasManager.MAINMENU_ICON_STATISTICS_UNPRESSED, ApplicationAtlasManager.MAINMENU_ICON_STATISTICS_PRESSED}, "mainmenu_statistics", null, AbstractMenu.MenuAction.CLOSE, new Tablexia.ChangeScreenEvent(StatisticsScreen.class,     TablexiaApplication.ScreenTransaction.FADE)),
 	ENCYCLOPEDIA		(false, new String[]{ApplicationAtlasManager.MAINMENU_ICON_ENCYCLOPEDIA_UNPRESSED, ApplicationAtlasManager.MAINMENU_ICON_ENCYCLOPEDIA_PRESSED}, "mainmenu_encyclopedia", null, AbstractMenu.MenuAction.CLOSE, new Tablexia.ChangeScreenEvent(EncyclopediaScreen.class,   TablexiaApplication.ScreenTransaction.FADE)),
diff --git a/core/src/cz/nic/tablexia/screen/gamemenu/GameMenuAssets.java b/core/src/cz/nic/tablexia/screen/gamemenu/GameMenuAssets.java
index 2b618e91c0791db9290e9c13b60f6ab202c7e5c1..0ae854e09b536f67dc69821789e3d9a25026a994 100644
--- a/core/src/cz/nic/tablexia/screen/gamemenu/GameMenuAssets.java
+++ b/core/src/cz/nic/tablexia/screen/gamemenu/GameMenuAssets.java
@@ -4,6 +4,7 @@ import java.util.ArrayList;
 import java.util.List;
 
 import cz.nic.tablexia.game.GameDefinition;
+import cz.nic.tablexia.menu.game.GameMenuDefinition;
 
 /**
  * Created by lhoracek on 3/11/15.
@@ -75,9 +76,9 @@ public final class GameMenuAssets {
         textures.add(PROFILE_PRESSED);
 
         String baseGameAsset = "MENU_GAME_";
-        for (GameDefinition gd : GameDefinition.getActiveGames()) {
+        for (GameMenuDefinition gd : GameMenuDefinition.values()) {
             for (GameMenuLayers gml : GameMenuLayers.values()) {
-                textures.add(getResourcePath(gd, gml));
+                textures.add(getResourcePath(gd.getGameDefinition(), gml));
             }
         }
     }
diff --git a/core/src/cz/nic/tablexia/screen/gamemenu/GameMenuScreen.java b/core/src/cz/nic/tablexia/screen/gamemenu/GameMenuScreen.java
index 529c7e3f496aa1b979385551b2757420e2e5a978..5c697a2c26c38537ffd11c11a8247d71e0a32902 100644
--- a/core/src/cz/nic/tablexia/screen/gamemenu/GameMenuScreen.java
+++ b/core/src/cz/nic/tablexia/screen/gamemenu/GameMenuScreen.java
@@ -13,6 +13,7 @@ import java.util.Map;
 import cz.nic.tablexia.TablexiaSettings;
 import cz.nic.tablexia.bus.ApplicationBus;
 import cz.nic.tablexia.game.GameDefinition;
+import cz.nic.tablexia.menu.game.GameMenuDefinition;
 import cz.nic.tablexia.screen.AbstractTablexiaScreen;
 import cz.nic.tablexia.screen.gamemenu.event.ShowGameMenuPageEvent;
 import cz.nic.tablexia.screen.gamemenu.pages.GameMenuPage;
@@ -79,8 +80,8 @@ public class GameMenuScreen extends AbstractTablexiaScreen<int[][]> {
         vp = new ViewPager();
         vp.addPage(new OfficeMenuPage(this));
 
-        for (GameDefinition gd : GameDefinition.getActiveGames()) {
-            vp.addPage(new GameMenuPage(this, gd));
+        for (GameMenuDefinition gd : GameMenuDefinition.values()) {
+            vp.addPage(new GameMenuPage(this, gd.getGameDefinition()));
         }
 
         vp.setSize(getStage().getWidth(), getStage().getHeight());
diff --git a/core/src/cz/nic/tablexia/screen/statistics/StatisticsScreen.java b/core/src/cz/nic/tablexia/screen/statistics/StatisticsScreen.java
index c58ea15a4e8d092d9b6b244f289b1afe2172aad3..d5bf3d5901fed125ac7ddb287ef167712ec37d96 100644
--- a/core/src/cz/nic/tablexia/screen/statistics/StatisticsScreen.java
+++ b/core/src/cz/nic/tablexia/screen/statistics/StatisticsScreen.java
@@ -20,10 +20,10 @@ import com.badlogic.gdx.scenes.scene2d.utils.TextureRegionDrawable;
 import java.util.Map;
 
 import cz.nic.tablexia.TablexiaSettings;
-import cz.nic.tablexia.game.GameDefinition;
 import cz.nic.tablexia.game.difficulty.GameDifficulty;
 import cz.nic.tablexia.loader.application.ApplicationAtlasManager;
 import cz.nic.tablexia.loader.application.ApplicationTextManager;
+import cz.nic.tablexia.menu.game.GameMenuDefinition;
 import cz.nic.tablexia.screen.AbstractTablexiaScreen;
 import cz.nic.tablexia.screen.statistics.views.BookmarkButton;
 import cz.nic.tablexia.util.Log;
@@ -91,10 +91,10 @@ public class StatisticsScreen extends AbstractTablexiaScreen<Void> {
         notebook.setBackground(new NinePatchDrawable(chartBackground));
 
         bookmarks = new VerticalGroup().space(10);
-        for (int i = 0; i < GameDefinition.getActiveGames().length; i++) {
-            GameDefinition gameDefinition = GameDefinition.getActiveGames()[i];
-            Button button = new BookmarkButton(gameDefinition.getTitle(), getScreenTextureRegion(GFX_PATH + "gamelist_listitem_background" + BOOKMARKS_TEXTURES[i] + "_inactive"), getScreenTextureRegion(GFX_PATH + "gamelist_listitem_background" + BOOKMARKS_TEXTURES[i] + "_active"), getDefaultRegularFont());
-            button.setUserObject(gameDefinition);
+        for (int i = 0; i < GameMenuDefinition.values().length; i++) {
+            GameMenuDefinition gameMenuDefinition = GameMenuDefinition.values()[i];
+            Button button = new BookmarkButton(gameMenuDefinition.getTitle(), getScreenTextureRegion(GFX_PATH + "gamelist_listitem_background" + BOOKMARKS_TEXTURES[i] + "_inactive"), getScreenTextureRegion(GFX_PATH + "gamelist_listitem_background" + BOOKMARKS_TEXTURES[i] + "_active"), getDefaultRegularFont());
+            button.setUserObject(gameMenuDefinition);
             button.addListener(bookmarkClickListener);
             bookmarks.addActor(button);
         }
@@ -134,7 +134,7 @@ public class StatisticsScreen extends AbstractTablexiaScreen<Void> {
 
     private InputListener bookmarkClickListener = new ClickListener() {
         public void clicked(InputEvent event, float x, float y) {
-            GameDefinition gameDefinition = (GameDefinition) event.getListenerActor().getUserObject();
+            GameMenuDefinition gameDefinition = (GameMenuDefinition) event.getListenerActor().getUserObject();
             Log.info(((Object) this).getClass(), "Selected game " + gameDefinition.getTitle());
             for (Actor game : bookmarks.getChildren()) {
                 ((Button) game).setChecked(true);