diff --git a/core/src/cz/nic/tablexia/game/games/night_watch/NightWatchGame.java b/core/src/cz/nic/tablexia/game/games/night_watch/NightWatchGame.java
index 39282501e11403c186df440d1c617703c4029618..d5567e028a27d10177ca13031d740718fdb738e0 100644
--- a/core/src/cz/nic/tablexia/game/games/night_watch/NightWatchGame.java
+++ b/core/src/cz/nic/tablexia/game/games/night_watch/NightWatchGame.java
@@ -1,7 +1,6 @@
 package cz.nic.tablexia.game.games.night_watch;
 
 import com.badlogic.gdx.graphics.Color;
-import com.badlogic.gdx.graphics.Pixmap;
 import com.badlogic.gdx.graphics.g2d.TextureRegion;
 import com.badlogic.gdx.scenes.scene2d.Action;
 import com.badlogic.gdx.scenes.scene2d.Group;
@@ -28,14 +27,14 @@ import cz.nic.tablexia.game.games.night_watch.helper.TextureHelper;
 import cz.nic.tablexia.game.games.night_watch.solution.GameSolutionGenerator;
 import cz.nic.tablexia.game.games.night_watch.solution.Solution;
 import cz.nic.tablexia.game.games.night_watch.subscene.Watch;
-import cz.nic.tablexia.game.games.robbery.rules.GameRule;
 import cz.nic.tablexia.util.Log;
+import cz.nic.tablexia.util.Utility;
 import cz.nic.tablexia.util.ui.TablexiaButton;
 
 /**
  * Created by Václav Tarantík on 6.3.15.
  */
-public class NightWatchGame extends AbstractTablexiaGame<GameRule> {
+public class NightWatchGame extends AbstractTablexiaGame<int[][]> {
     private static final int SCREEN_WIDTH = TablexiaSettings.getWorldWidth();
     private static final int SCREEN_MIN_HEIGHT = TablexiaSettings.getMinWorldHeight();
     private static final int INITIAL_BG_TEXTURE_INDEX = 0;
@@ -55,7 +54,6 @@ public class NightWatchGame extends AbstractTablexiaGame<GameRule> {
     private Watch watch;
     private TablexiaButton button;
     private TextureRegion clickmap;
-    private Pixmap pixmap;
 
     @Override
     protected void gameLoaded() {
@@ -72,15 +70,17 @@ public class NightWatchGame extends AbstractTablexiaGame<GameRule> {
         prepareWindows();
         prepareWatch();
         prepareButton();
-        prepareClickMap();
-
 
         startRound();
     }
 
     @Override
-    protected void screenDisposed() {
-        pixmap.dispose();
+    protected int[][] prepareGameData() {
+        clickmap = getScreenTextureRegion(TextureHelper.getClickMapPath(difficulty));
+        if (!clickmap.getTexture().getTextureData().isPrepared()) {
+            clickmap.getTexture().getTextureData().prepare();
+        }
+        return Utility.createColorMap(clickmap);
     }
 
     private void prepareBackground(){
@@ -144,14 +144,6 @@ public class NightWatchGame extends AbstractTablexiaGame<GameRule> {
 
     }
 
-    private void prepareClickMap() {
-        clickmap = getScreenTextureRegion(TextureHelper.getClickMapPath(difficulty));
-        if (!clickmap.getTexture().getTextureData().isPrepared()) {
-            clickmap.getTexture().getTextureData().prepare();
-        }
-        pixmap = clickmap.getTexture().getTextureData().consumePixmap();
-    }
-
     //initial animation
     private void startRound(){
         enableClickables(false);
@@ -319,6 +311,6 @@ public class NightWatchGame extends AbstractTablexiaGame<GameRule> {
     private Color getTouchedColor(float x, float y) {
         int clickX = (int) (x / SCREEN_WIDTH * clickmap.getRegionWidth());
         int clickY = clickmap.getRegionHeight() - (int) (y / SCREEN_MIN_HEIGHT * clickmap.getRegionHeight());
-        return new Color(pixmap.getPixel(clickmap.getRegionX() + clickX, clickmap.getRegionY() + clickY));
+        return new Color(getData()[clickX][clickY]);
     }
 }
diff --git a/core/src/cz/nic/tablexia/screen/AbstractTablexiaScreen.java b/core/src/cz/nic/tablexia/screen/AbstractTablexiaScreen.java
index 1c7babc5d407542de48746d6a63e7678df1613ea..f091d3f697bb8bcd378634ef9e9910044cc95964 100644
--- a/core/src/cz/nic/tablexia/screen/AbstractTablexiaScreen.java
+++ b/core/src/cz/nic/tablexia/screen/AbstractTablexiaScreen.java
@@ -556,7 +556,7 @@ public abstract class AbstractTablexiaScreen<T> extends ScreenAdapter {
 		return textManager.getResult().format(key, args);
 	}
 	
-	protected T getData() {
+	public T getData() {
 		return dataManager.getResult();
 	}
 
diff --git a/core/src/cz/nic/tablexia/screen/createuser/PanoramaScreen.java b/core/src/cz/nic/tablexia/screen/createuser/PanoramaScreen.java
index 888b4d98327f8f8dd17f97cf91642707e03ee2a7..bbd45075caae938780f888b484734c1bf398fb27 100644
--- a/core/src/cz/nic/tablexia/screen/createuser/PanoramaScreen.java
+++ b/core/src/cz/nic/tablexia/screen/createuser/PanoramaScreen.java
@@ -3,7 +3,6 @@ package cz.nic.tablexia.screen.createuser;
 import com.badlogic.gdx.audio.Music;
 import com.badlogic.gdx.audio.Sound;
 import com.badlogic.gdx.graphics.Color;
-import com.badlogic.gdx.graphics.Pixmap;
 import com.badlogic.gdx.graphics.g2d.TextureRegion;
 import com.badlogic.gdx.scenes.scene2d.Actor;
 import com.badlogic.gdx.scenes.scene2d.Group;
@@ -25,6 +24,7 @@ import cz.nic.tablexia.TablexiaApplication;
 import cz.nic.tablexia.bus.ApplicationBus;
 import cz.nic.tablexia.screen.AbstractTablexiaScreen;
 import cz.nic.tablexia.util.ScaleUtil;
+import cz.nic.tablexia.util.Utility;
 import cz.nic.tablexia.util.ui.dialog.TablexiaDialog;
 import cz.nic.tablexia.util.ui.dialog.TextDialog;
 import cz.nic.tablexia.util.ui.dialog.text.DialogTextContent;
@@ -32,7 +32,7 @@ import cz.nic.tablexia.util.ui.dialog.text.DialogTextContent;
 /**
  * Screen showing street animation and office before user create form
  */
-public class PanoramaScreen extends AbstractTablexiaScreen<Void> {
+public class PanoramaScreen extends AbstractTablexiaScreen<int[][]> {
 
     public static final String GFX_PATH = "gfx/";
     public static final String SFX_PATH = "sfx/";
@@ -52,7 +52,6 @@ public class PanoramaScreen extends AbstractTablexiaScreen<Void> {
     public static final String MUSIC_4 = MFX_PATH + "newspaper/4.mp3";
 
     private TextureRegion clickmap;
-    private Pixmap pixmap;
 
     @Override
     protected String prepareScreenTextResourcesAssetName() {
@@ -61,19 +60,17 @@ public class PanoramaScreen extends AbstractTablexiaScreen<Void> {
     }
 
     @Override
-    protected void screenLoaded() {
-        switchSubscreen(prepareBalcony());
-
+    protected int[][] prepareScreenData() {
         clickmap = getScreenTextureRegion(GFX_PATH + "newspaper/clickmap");
         if (!clickmap.getTexture().getTextureData().isPrepared()) {
             clickmap.getTexture().getTextureData().prepare();
         }
-        pixmap = clickmap.getTexture().getTextureData().consumePixmap();
+        return Utility.createColorMap(clickmap);
     }
 
     @Override
-    protected void screenDisposed() {
-        pixmap.dispose();
+    protected void screenLoaded() {
+        switchSubscreen(prepareBalcony());
     }
 
     @Override
@@ -365,7 +362,7 @@ public class PanoramaScreen extends AbstractTablexiaScreen<Void> {
             private Color getTouchedColor(float x, float y) {
                 int clickX = (int) (x / newspaper.getWidth() * clickmap.getRegionWidth());
                 int clickY = clickmap.getRegionHeight() - (int) (y / newspaper.getHeight() * clickmap.getRegionHeight());
-                return new Color(pixmap.getPixel(clickmap.getRegionX() + clickX, clickmap.getRegionY() + clickY));
+                return new Color(getData()[clickX][clickY]);
             }
         });
 
diff --git a/core/src/cz/nic/tablexia/screen/gamemenu/GameMenuScreen.java b/core/src/cz/nic/tablexia/screen/gamemenu/GameMenuScreen.java
index 611caf40acf51e069245bf193c9d38e9f79f9aac..966ee8be57d0b31f52247a2b99c00c18c2e0881a 100644
--- a/core/src/cz/nic/tablexia/screen/gamemenu/GameMenuScreen.java
+++ b/core/src/cz/nic/tablexia/screen/gamemenu/GameMenuScreen.java
@@ -1,5 +1,6 @@
 package cz.nic.tablexia.screen.gamemenu;
 
+import com.badlogic.gdx.graphics.g2d.TextureRegion;
 import com.badlogic.gdx.scenes.scene2d.Touchable;
 import com.badlogic.gdx.scenes.scene2d.ui.Image;
 
@@ -11,12 +12,12 @@ import cz.nic.tablexia.game.GameDefinition;
 import cz.nic.tablexia.screen.AbstractTablexiaScreen;
 import cz.nic.tablexia.screen.gamemenu.pages.GameMenuPage;
 import cz.nic.tablexia.screen.gamemenu.pages.OfficeMenuPage;
+import cz.nic.tablexia.util.Utility;
 import cz.nic.tablexia.util.ui.ViewPager;
 
-public class GameMenuScreen extends AbstractTablexiaScreen<Void> {
+public class GameMenuScreen extends AbstractTablexiaScreen<int[][]> {
 
     private ViewPager vp;
-    private OfficeMenuPage officeMenuPage;
 
     @Override
     protected String prepareScreenTextResourcesAssetName() {
@@ -28,8 +29,7 @@ public class GameMenuScreen extends AbstractTablexiaScreen<Void> {
     protected void screenLoaded() {
         getStage().setDebugAll(TablexiaSettings.getInstance().isShowBoundingBoxes());
         vp = new ViewPager();
-        officeMenuPage = new OfficeMenuPage(this);
-        vp.addPage(officeMenuPage);
+        vp.addPage(new OfficeMenuPage(this));
 
         for (GameDefinition gd : GameDefinition.getActiveGames()) {
             vp.addPage(new GameMenuPage(this, gd));
@@ -52,7 +52,11 @@ public class GameMenuScreen extends AbstractTablexiaScreen<Void> {
     }
 
     @Override
-    protected void screenDisposed() {
-        officeMenuPage.dispose();
+    protected int[][] prepareScreenData() {
+        TextureRegion clickmap = getScreenTextureRegion(GameMenuAssets.OFFICE_CLICKMAP);
+        if (!clickmap.getTexture().getTextureData().isPrepared()) {
+            clickmap.getTexture().getTextureData().prepare();
+        }
+        return Utility.createColorMap(clickmap);
     }
 }
diff --git a/core/src/cz/nic/tablexia/screen/gamemenu/pages/MenuPage.java b/core/src/cz/nic/tablexia/screen/gamemenu/pages/MenuPage.java
index 540fbad7b4f6574b58a881a08e863e5593d8bb0a..8f782e7e45719cb11171755201b49f218b70ec54 100644
--- a/core/src/cz/nic/tablexia/screen/gamemenu/pages/MenuPage.java
+++ b/core/src/cz/nic/tablexia/screen/gamemenu/pages/MenuPage.java
@@ -2,21 +2,20 @@ package cz.nic.tablexia.screen.gamemenu.pages;
 
 import com.badlogic.gdx.scenes.scene2d.Actor;
 import com.badlogic.gdx.scenes.scene2d.Group;
-import com.badlogic.gdx.utils.Disposable;
 
 import cz.nic.tablexia.screen.AbstractTablexiaScreen;
 
 /**
  * Created by lhoracek on 3/4/15.
  */
-public abstract class MenuPage extends Group implements Disposable {
-    private AbstractTablexiaScreen screen;
+public abstract class MenuPage extends Group {
+    private AbstractTablexiaScreen<int[][]> screen;
 
-    public MenuPage(AbstractTablexiaScreen screen) {
+    public MenuPage(AbstractTablexiaScreen<int[][]> screen) {
         this.screen = screen;
     }
 
-    protected AbstractTablexiaScreen getScreen() {
+    protected AbstractTablexiaScreen<int[][]> getScreen() {
         return screen;
     }
 
@@ -27,9 +26,4 @@ public abstract class MenuPage extends Group implements Disposable {
             a.setDebug(enabled);
         }
     }
-
-    @Override
-    public void dispose() {
-        // nothing needed
-    }
 }
diff --git a/core/src/cz/nic/tablexia/screen/gamemenu/pages/OfficeMenuPage.java b/core/src/cz/nic/tablexia/screen/gamemenu/pages/OfficeMenuPage.java
index 5c97a921ef86b0a588a78168d81118d70516908c..ab37ce03db6bcf33213218835dc3207d43e17dcf 100644
--- a/core/src/cz/nic/tablexia/screen/gamemenu/pages/OfficeMenuPage.java
+++ b/core/src/cz/nic/tablexia/screen/gamemenu/pages/OfficeMenuPage.java
@@ -1,7 +1,6 @@
 package cz.nic.tablexia.screen.gamemenu.pages;
 
 import com.badlogic.gdx.graphics.Color;
-import com.badlogic.gdx.graphics.Pixmap;
 import com.badlogic.gdx.graphics.g2d.TextureRegion;
 import com.badlogic.gdx.scenes.scene2d.Group;
 import com.badlogic.gdx.scenes.scene2d.InputEvent;
@@ -40,7 +39,6 @@ public class OfficeMenuPage extends MenuPage {
     private Image encyclopedia;
     private Image street;
     private Image profile;
-    private final Pixmap pixmap;
     private final TextureRegion clickmap;
 
 
@@ -104,11 +102,6 @@ public class OfficeMenuPage extends MenuPage {
         });
 
         clickmap = getScreen().getScreenTextureRegion(GameMenuAssets.OFFICE_CLICKMAP);
-        if (!clickmap.getTexture().getTextureData().isPrepared()) {
-            clickmap.getTexture().getTextureData().prepare();
-        }
-
-        pixmap = clickmap.getTexture().getTextureData().consumePixmap();
     }
 
     private void createImageStack() {
@@ -160,7 +153,8 @@ public class OfficeMenuPage extends MenuPage {
     private Color getTouchedColor(float x, float y) {
         int clickX = (int) (x / getWidth() * clickmap.getRegionWidth());
         int clickY = clickmap.getRegionHeight() - (int) (y / getHeight() * clickmap.getRegionHeight());
-        return new Color(pixmap.getPixel(clickmap.getRegionX() + clickX, clickmap.getRegionY() + clickY));
+
+        return new Color(getScreen().getData()[clickX][clickY]);
     }
 
     /**
@@ -168,9 +162,4 @@ public class OfficeMenuPage extends MenuPage {
      */
     public static class ShowStreetEvent implements ApplicationBus.ApplicationEvent {
     }
-
-    @Override
-    public void dispose() {
-        pixmap.dispose();
-    }
 }
diff --git a/core/src/cz/nic/tablexia/util/Utility.java b/core/src/cz/nic/tablexia/util/Utility.java
index 02b8eca99dddf209f8641b25a53fbb3037510330..05148da9bf85e90a998e2276446e8954ad371f9b 100644
--- a/core/src/cz/nic/tablexia/util/Utility.java
+++ b/core/src/cz/nic/tablexia/util/Utility.java
@@ -1,5 +1,7 @@
 package cz.nic.tablexia.util;
 
+import com.badlogic.gdx.graphics.Pixmap;
+import com.badlogic.gdx.graphics.g2d.TextureRegion;
 import com.badlogic.gdx.utils.reflect.ClassReflection;
 import com.badlogic.gdx.utils.reflect.ReflectionException;
 import com.google.common.base.Splitter;
@@ -31,4 +33,21 @@ public class Utility {
         return localAssetsPath.replace(File.separatorChar, '.');
     }
 
+    public static int[][] createColorMap(TextureRegion clickmap) {
+        int clickmapWidth = clickmap.getRegionWidth();
+        int clickmapHeight = clickmap.getRegionHeight();
+
+        Pixmap pixmap = clickmap.getTexture().getTextureData().consumePixmap();
+
+        int [][] colors = new int[clickmapWidth][clickmapHeight];
+        for (int i = 0; i < clickmapWidth; i++) {
+            for (int j = 0; j < clickmapHeight; j++) {
+                colors[i][j] = pixmap.getPixel(clickmap.getRegionX() + i, clickmap.getRegionY() + j);
+            }
+        }
+
+        pixmap.dispose();
+        return colors;
+    }
+
 }