diff --git a/core/assets/common/game/runes/common/gfx/background.jpg b/core/assets/common/game/runes/common/gfx/background.jpg
deleted file mode 100644
index 1a2cd4e7ce1008d9db274f2df84d7b521fe160ac..0000000000000000000000000000000000000000
Binary files a/core/assets/common/game/runes/common/gfx/background.jpg and /dev/null differ
diff --git a/core/assets/common/game/runes/common/gfx/background.png b/core/assets/common/game/runes/common/gfx/background.png
new file mode 100644
index 0000000000000000000000000000000000000000..43ad54697e94ca5022bd74b951cc0bac327af1a1
Binary files /dev/null and b/core/assets/common/game/runes/common/gfx/background.png differ
diff --git a/core/src/cz/nic/tablexia/game/games/runes/RunesGame.java b/core/src/cz/nic/tablexia/game/games/runes/RunesGame.java
index 9057abde025cc1aeb2e54b18e9444826b67cfbb8..0619ff2ff80688881480249baa6357d3176b9d41 100644
--- a/core/src/cz/nic/tablexia/game/games/runes/RunesGame.java
+++ b/core/src/cz/nic/tablexia/game/games/runes/RunesGame.java
@@ -40,7 +40,6 @@ import cz.nic.tablexia.shared.model.Game;
 import cz.nic.tablexia.util.Log;
 import cz.nic.tablexia.util.Utility;
 import cz.nic.tablexia.util.ui.TablexiaLabel;
-import cz.nic.tablexia.util.ui.actionwidget.Action;
 import cz.nic.tablexia.util.ui.dialog.components.FixedSpaceContentDialogComponent;
 import cz.nic.tablexia.util.ui.dialog.components.TablexiaDialogComponentAdapter;
 import cz.nic.tablexia.util.ui.dialog.components.TextContentDialogComponent;
@@ -52,7 +51,7 @@ public class RunesGame extends AbstractTablexiaGame<RunesGameState> {
 
     private static final int ONE_SECOND_DELAY = 1;
 
-    private static final float SIDEBAR_RELATIVE_WIDTH       = 0.17f;
+    public static final float SIDEBAR_RELATIVE_WIDTH       = 0.17f;
     private static final int   SIDEBAR_ITEMS_PAD            = 10;
     private static final float TARGET_PLATE_RELATIVE_HEIGHT = 0.45f;
     private static final float HEALTHBAR_RELATIVE_HEIGHT = 0.2f;
diff --git a/core/src/cz/nic/tablexia/game/games/runes/actors/RunesHolder.java b/core/src/cz/nic/tablexia/game/games/runes/actors/RunesHolder.java
index 0333666f5510eda1b69b7e9a581262a6eed8e789..e7c643bd60eed1917f97b8231cb628c2109b8439 100644
--- a/core/src/cz/nic/tablexia/game/games/runes/actors/RunesHolder.java
+++ b/core/src/cz/nic/tablexia/game/games/runes/actors/RunesHolder.java
@@ -14,7 +14,7 @@ import cz.nic.tablexia.TablexiaSettings;
 import cz.nic.tablexia.game.common.TablexiaRandom;
 import cz.nic.tablexia.game.common.media.GfxLibrary;
 import cz.nic.tablexia.game.difficulty.GameDifficulty;
-import cz.nic.tablexia.game.games.runes.assets.RuneDefinition;
+import cz.nic.tablexia.game.games.runes.RunesGame;
 import cz.nic.tablexia.game.games.runes.helper.PositionDefinition;
 import cz.nic.tablexia.game.games.runes.helper.RuneDescription;
 import cz.nic.tablexia.game.games.runes.model.RunesDifficultyDefinition;
@@ -80,10 +80,6 @@ public class RunesHolder extends Group {
         return false;
     }
 
-    public int getRunesCount() {
-        return runesCount;
-    }
-
     public int getWrongRunesCount() {
         return runesCount - holderTargets.size();
     }
@@ -135,10 +131,6 @@ public class RunesHolder extends Group {
         setWidth(getWidth() + actor.getWidth() + runesGroup.getSpace());
     }
 
-    public void setHolderTargets(List<RuneDescription> runeDescriptions) {
-        holderTargets = runeDescriptions;
-    }
-
     /**
      * Set scale value depending on position (folded holder can be smaller/bigger depending on PositionDefinition values)
      *
@@ -182,11 +174,12 @@ public class RunesHolder extends Group {
             setTouchable(Touchable.childrenOnly);
             toFront();
             prevX = getX();
+            float stageWidth = getStage().getWidth() * (1-RunesGame.SIDEBAR_RELATIVE_WIDTH);
             float prevMid = prevX + getWidth() * 0.5f * getScaleX();
             setScale(UNFOLDED_SCALE);
             float newX = prevMid - getWidth() * getScaleX() * 0.5f;
-            if (newX + getWidth() * getScaleX() >= getStage().getWidth() - PAD) {
-                setX(getStage().getWidth() - PAD - getWidth() * getScaleX());
+            if (newX + getWidth() * getScaleX() >= stageWidth - PAD) {
+                setX(stageWidth - PAD - getWidth() * getScaleX());
             } else if (newX <= 0) {
                 setX(PAD);
             } else {
@@ -204,7 +197,7 @@ public class RunesHolder extends Group {
         prevX = 0;
         setAlternativeScale(positionDefinition.getScale());
         setPosition(positionDefinition.getX() * width, positionDefinition.getY() * height);
-        maxEntities = positionDefinition.getMaxRunes();
+        maxEntities = PositionDefinition.getMaxChildrenCount(gameDifficulty,positionDefinition);
     }
 
     public boolean isFolded() {
diff --git a/core/src/cz/nic/tablexia/game/games/runes/helper/PositionDefinition.java b/core/src/cz/nic/tablexia/game/games/runes/helper/PositionDefinition.java
index c23806bde6b8efc631a0930b49fac02b37f935f6..386df74e77e2bdde890f55a79644454bf8146259 100644
--- a/core/src/cz/nic/tablexia/game/games/runes/helper/PositionDefinition.java
+++ b/core/src/cz/nic/tablexia/game/games/runes/helper/PositionDefinition.java
@@ -14,43 +14,35 @@ import cz.nic.tablexia.game.games.runes.model.RunesGameProperties;
  */
 public enum PositionDefinition {
 
-    //x,y, max height, max runes
-    
-    POS1(0.22f,0.14f),
-    POS2(0.22f,0.51f),
-    POS3(0.22f,0.87f),
-    POS4(0.58f,0.71f,3),
-    POS5(0.58f,0.37f,3),
-    POS6(0.58f,0.01f,3),
-    POS7(0.04f,0.57f,2),
-    POS8(0.02f,0.19f,2);
+    //x,y, max runes, max runes clusters
+
+    POS1(0.24f, 0.14f, 5, 4),
+    POS2(0.24f, 0.51f, 5, 4),
+    POS3(0.24f, 0.87f, 5, 4),
+    POS4(0.62f, 0.71f, 3, 2),
+    POS5(0.62f, 0.37f, 3, 2),
+    POS6(0.62f, 0.01f, 3, 2),
+    POS7(0.01f, 0.57f, 3, 2),
+    POS8(0.01f, 0.19f, 3, 2);
     
     private static final float FOLDED_SCALE = 0.6f;
-    private static final int MAX_RUNES = 4;
 
     public static final PositionDefinition[] MAP_EASY   = PositionDefinition.values();
     public static final PositionDefinition[] MAP_MEDIUM = PositionDefinition.values(); //was meant to be different for every difficulty
     public static final PositionDefinition[] MAP_HARD   = PositionDefinition.values();
 
     private float x, y, scale;
-    private int maxRunes;
-
-    PositionDefinition(float x, float y) {
-        this(x,y,FOLDED_SCALE,MAX_RUNES);
-    }
-
-    PositionDefinition(float x, float y, float scale) {
-        this(x,y,scale,MAX_RUNES);
-    }
+    private int maxRunes, maxRunesClusters;
 
-    PositionDefinition(float x, float y, int maxRunes) {
-        this(x,y,FOLDED_SCALE,maxRunes);
+    PositionDefinition(float x, float y, int maxRunes, int maxRunesClusters) {
+        this(x, y, FOLDED_SCALE, maxRunes, maxRunesClusters);
     }
 
-    PositionDefinition(float x, float y, float scale, int maxRunes) {
+    PositionDefinition(float x, float y, float scale, int maxRunes, int maxRunesClusters) {
         this.x = x;
         this.y = y;
         this.maxRunes = maxRunes;
+        this.maxRunesClusters = maxRunesClusters;
         this.scale = scale;
     }
 
@@ -71,6 +63,10 @@ public enum PositionDefinition {
         return y;
     }
 
+    public int getMaxRunesClusters() {
+        return maxRunesClusters;
+    }
+
     private static List<PositionDefinition> getMapPositions(GameDifficulty runesDifficulty) {
         return Arrays.asList(RunesDifficultyDefinition.getRunesDifficultyForGameDifficulty(runesDifficulty).getPositionDefinitions());
     }
@@ -88,4 +84,9 @@ public enum PositionDefinition {
         return RunesDifficultyDefinition.getRunesDifficultyForGameDifficulty(gameDifficulty).getGroupsCount()[round];
     }
     
+    public static int getMaxChildrenCount(GameDifficulty gameDifficulty, PositionDefinition positionDefinition){
+        if (gameDifficulty.equals(GameDifficulty.HARD)) return positionDefinition.getMaxRunesClusters();
+        else return positionDefinition.getMaxRunes();
+    }
+    
 }
diff --git a/core/src/cz/nic/tablexia/game/games/runes/model/RunesGameProperties.java b/core/src/cz/nic/tablexia/game/games/runes/model/RunesGameProperties.java
index 941d024e1e49803766df33a2ca9d1575ebe71bd7..91fcebf851b419eda3981e08600a27ff346029d8 100644
--- a/core/src/cz/nic/tablexia/game/games/runes/model/RunesGameProperties.java
+++ b/core/src/cz/nic/tablexia/game/games/runes/model/RunesGameProperties.java
@@ -14,30 +14,30 @@ public class RunesGameProperties {
     public static final int[] CUPS_EASY           = {15, 26, 38};
     public static final int[] CUPS_MEDIUM         = {15, 26, 38};
     public static final int[] CUPS_HARD           = {15, 26, 38};
-    
-    public static final int[] GROUPS_EASY = {2,2,3,3,3,3,3,3,3,3,3,3};
-    public static final int[] GROUPS_MEDIUM = {2,2,3,3,3,3,4,4,4,5,5,5};
-    public static final int[] GROUPS_HARD = {2,2,3,3,3,3,4,4,5,5,6,6};
-    
-    public static final int[] RUNES_COUNT = {6,7,8,9,10,11,11,12,13,13,14,15};
-    public static final int[] RUNES_TO_FIND = {2,2,3,3,3,3,4,4,4,5,5,6}; //44
+
+    public static final int[] GROUPS_EASY   = {3, 3, 4, 4, 4, 4, 4, 5, 5, 5, 6, 6};
+    public static final int[] GROUPS_MEDIUM = {3, 3, 4, 4, 4, 4, 4, 5, 5, 5, 6, 6};
+    public static final int[] GROUPS_HARD   = {3, 3, 4, 4, 4, 4, 5, 5, 6, 6, 7, 7};
+
+    public static final int[] RUNES_COUNT   = {6, 7, 8, 9, 10, 11, 11, 12, 13, 13, 14, 15};
+    public static final int[] RUNES_TO_FIND = {2, 2, 3, 3, 3, 3, 4, 4, 4, 5, 5, 6}; //44
 
     public static final String MFX_PATH = "common/sfx/";
 
-    public static final String[] RESULT_SOUNDS = new String[]{ MFX_PATH + "result_0.mp3",
+    public static final String[] RESULT_SOUNDS = new String[]{MFX_PATH + "result_0.mp3",
             MFX_PATH + "result_1.mp3",
             MFX_PATH + "result_2.mp3",
             MFX_PATH + "result_3.mp3"};
 
-    public static final String[] RESULT_TEXT   = new String[]{ "game_runes_result_0",
+    public static final String[] RESULT_TEXT = new String[]{"game_runes_result_0",
             "game_runes_result_1",
             "game_runes_result_2",
             "game_runes_result_3"};
 
     public static final String RESULT_TEXT_SUMMARY = "game_runes_stats";
-    
-    public static int getGroupCount(GameDifficulty gameDifficulty, int round){
+
+    public static int getGroupCount(GameDifficulty gameDifficulty, int round) {
         return RunesDifficultyDefinition.getRunesDifficultyForGameDifficulty(gameDifficulty).getGroupsCount()[round];
     }
-    
+
 }