diff --git a/frontend/android/AndroidManifest.xml b/frontend/android/AndroidManifest.xml
index 0b4adf0d1847db490b4bc696bf26d8d897b043e8..c84955598781818383685ee4cb5ad9ca8628faac 100644
--- a/frontend/android/AndroidManifest.xml
+++ b/frontend/android/AndroidManifest.xml
@@ -5,7 +5,7 @@
 
     <application
         android:allowBackup="true"
-        android:icon="@drawable/ic_launcher"
+        android:icon="@drawable/gameware_logo"
         android:isGame="true"
         android:appCategory="game"
         android:label="@string/app_name"
diff --git a/frontend/android/assets/bubbleWrapPhoto.png b/frontend/android/assets/bubbleWrapPhoto.png
new file mode 100644
index 0000000000000000000000000000000000000000..04b12fdd3f2af2026d19d4f74c42f0288005d8b2
Binary files /dev/null and b/frontend/android/assets/bubbleWrapPhoto.png differ
diff --git a/frontend/android/assets/bubbleWrapPhotoEdit.png b/frontend/android/assets/bubbleWrapPhotoEdit.png
new file mode 100644
index 0000000000000000000000000000000000000000..30f989cdf614c034d7806e0f405c1fe19930ee7f
Binary files /dev/null and b/frontend/android/assets/bubbleWrapPhotoEdit.png differ
diff --git a/frontend/android/assets/colorRushPhoto.png b/frontend/android/assets/colorRushPhoto.png
new file mode 100644
index 0000000000000000000000000000000000000000..c820977028c5614454677bec91f1fbb0de910816
Binary files /dev/null and b/frontend/android/assets/colorRushPhoto.png differ
diff --git a/frontend/android/assets/colorRushPhotoEdit.png b/frontend/android/assets/colorRushPhotoEdit.png
new file mode 100644
index 0000000000000000000000000000000000000000..3f35ee58031891837e3e6431b85fde4cfb091e98
Binary files /dev/null and b/frontend/android/assets/colorRushPhotoEdit.png differ
diff --git a/frontend/android/assets/glassy/raw/button-disabled.png b/frontend/android/assets/glassy/raw/button-disabled.png
new file mode 100644
index 0000000000000000000000000000000000000000..18ca2b35d0546b22a4aa1e3cffce547ab08a6605
Binary files /dev/null and b/frontend/android/assets/glassy/raw/button-disabled.png differ
diff --git a/frontend/android/res/drawable-xxxhdpi/gameware_logo.png b/frontend/android/res/drawable-xxxhdpi/gameware_logo.png
new file mode 100644
index 0000000000000000000000000000000000000000..f7be1fcf294fd2e29ac8c4393c0ea6efb2172dd4
Binary files /dev/null and b/frontend/android/res/drawable-xxxhdpi/gameware_logo.png differ
diff --git a/frontend/core/src/com/gameware/game/states/BubbleWrapState.java b/frontend/core/src/com/gameware/game/states/BubbleWrapState.java
index c6e5a1c0f967a9086319c3463ae192f366bab46f..f7d7a0b0d60cf0ee42fc56d62dff33cd1a390b2b 100644
--- a/frontend/core/src/com/gameware/game/states/BubbleWrapState.java
+++ b/frontend/core/src/com/gameware/game/states/BubbleWrapState.java
@@ -28,6 +28,7 @@ public class BubbleWrapState extends PlayStateTemplate {
 
     public BubbleWrapState(GameStateManager gsm) {
         super(gsm);
+        super.screenshot = new Texture(Gdx.files.internal("bubbleWrapPhotoEdit.png"));
 
         unpopped = new Texture(Gdx.files.internal("glassy/raw/bubble_unpopped_1.png"));
         popped1 = new Texture(Gdx.files.internal("glassy/raw/bubble_popped_1.png"));
@@ -157,6 +158,7 @@ public class BubbleWrapState extends PlayStateTemplate {
         this.popped2.dispose();
         this.popped3.dispose();
         this.pauseButton.dispose();
+        background.dispose();
     }
 
     @Override
diff --git a/frontend/core/src/com/gameware/game/states/ColorRushState.java b/frontend/core/src/com/gameware/game/states/ColorRushState.java
index 4e205b2c7be0e3710dc925785ead99eeba714644..1ffaceb81f05439648eaea8e95cbb0e09cacb187 100644
--- a/frontend/core/src/com/gameware/game/states/ColorRushState.java
+++ b/frontend/core/src/com/gameware/game/states/ColorRushState.java
@@ -30,11 +30,11 @@ public class ColorRushState extends PlayStateTemplate {
     private boolean buttonsEnabled = true;
     private boolean disposeTargetLeft = true;
 
-
     private PauseButton pauseButton;
 
     public ColorRushState(GameStateManager gsm){
         super(gsm);
+        super.screenshot = new Texture(Gdx.files.internal("colorRushPhotoEdit.png"));
 
         // Creates the background
         this.background = new Texture(Gdx.files.internal("glassy/raw/ColorRushBackground.jpg"));
diff --git a/frontend/core/src/com/gameware/game/states/CreateJoinTournamentState.java b/frontend/core/src/com/gameware/game/states/CreateJoinTournamentState.java
index f917f99c223e94fd16bdbf4582b17bd2d5a3b6c0..4470f7a41ee6811837a55c158081971f6b380fed 100644
--- a/frontend/core/src/com/gameware/game/states/CreateJoinTournamentState.java
+++ b/frontend/core/src/com/gameware/game/states/CreateJoinTournamentState.java
@@ -1,6 +1,7 @@
 package com.gameware.game.states;
 
 import com.badlogic.gdx.Gdx;
+import com.badlogic.gdx.Input;
 import com.badlogic.gdx.graphics.Color;
 import com.badlogic.gdx.graphics.Pixmap;
 import com.badlogic.gdx.graphics.Texture;
@@ -52,7 +53,7 @@ public class CreateJoinTournamentState extends State {
     private List<Tournament> tournaments = new ArrayList<>();
     private Tournament tournamentTryingToLeave = null;
     private int padding = 50;
-    private String includeFinTournamentsLabelText = "Include finished \n tournaments?";
+    private String includeFinTournamentsLabelText = "Include finished?";
 
     private boolean includeFinishedTournaments = false;
 
@@ -135,11 +136,10 @@ public class CreateJoinTournamentState extends State {
         btnTable.row();
         btnTable.add(makeCreateBtn()).size(buttonWidth, buttonHeight).spaceBottom(spacingOnBottomInputFIeld).spaceRight(spacingOnBottom);
         btnTable.add(makeJoinBtn()).size(buttonWidth, buttonHeight).spaceBottom(spacingOnBottomInputFIeld);
-        btnTable.row();
-        btnTable.add(makeBackBtn());
         outerTable.add(btnTable);
 
         stage.addActor(outerTable);
+        stage.addActor(makeBackBtn());
 
         makeDialog();
     }
@@ -252,6 +252,7 @@ public class CreateJoinTournamentState extends State {
                 handleBackBtnClick();
             }
         });
+        backBtn.setPosition(backBtnPlacementX, backBtnPlacementY);
         return backBtn;
     }
 
@@ -272,11 +273,17 @@ public class CreateJoinTournamentState extends State {
     }
 
     @Override
-    protected void handleInput() { }
+    protected void handleInput() {
+        if (Gdx.input.isKeyJustPressed(Input.Keys.BACK)){
+            handleBackBtnClick();
+        }
+    }
 
     @Override
     public void update(float dt) {
         Gdx.input.setInputProcessor(stage);
+        Gdx.input.setCatchBackKey(true);
+        handleInput();
         stage.act(dt);
     }
 
@@ -320,7 +327,7 @@ public class CreateJoinTournamentState extends State {
     }
 
     private void handleLeaveBtnClick(Tournament t){
-        dialog.text("Do you want do leave\n"+t.getName()+"?").pad(padding);
+        dialog.text("Do you want to leave\n"+t.getName()+"?").pad(padding);
         dialog.show(stage);
         tournamentTryingToLeave = t;
     }
diff --git a/frontend/core/src/com/gameware/game/states/CreateNewTournamentState.java b/frontend/core/src/com/gameware/game/states/CreateNewTournamentState.java
index d6495deb3d0d4a5d2097b31faf3827be7aec56e2..15e91ba9e7c9faf38823402fc72b521c1949070d 100644
--- a/frontend/core/src/com/gameware/game/states/CreateNewTournamentState.java
+++ b/frontend/core/src/com/gameware/game/states/CreateNewTournamentState.java
@@ -1,6 +1,7 @@
 package com.gameware.game.states;
 
 import com.badlogic.gdx.Gdx;
+import com.badlogic.gdx.Input;
 import com.badlogic.gdx.graphics.g2d.SpriteBatch;
 import com.badlogic.gdx.scenes.scene2d.InputEvent;
 import com.badlogic.gdx.scenes.scene2d.ui.CheckBox;
@@ -161,11 +162,16 @@ public class CreateNewTournamentState extends State {
 
     @Override
     protected void handleInput() {
-
+        if (Gdx.input.isKeyJustPressed(Input.Keys.BACK)){
+            handleCancelBtnClick();
+        }
     }
 
     @Override
     public void update(float dt) {
+        Gdx.input.setInputProcessor(stage);
+        Gdx.input.setCatchBackKey(true);
+        handleInput();
         stage.act(dt);
     }
 
diff --git a/frontend/core/src/com/gameware/game/states/FinishedTournamentState.java b/frontend/core/src/com/gameware/game/states/FinishedTournamentState.java
index 12cd600498330899e2378a2f1f54e91b00db119a..864a90dfea098e8bfea75a9eb1f0e688f37ed60c 100644
--- a/frontend/core/src/com/gameware/game/states/FinishedTournamentState.java
+++ b/frontend/core/src/com/gameware/game/states/FinishedTournamentState.java
@@ -1,6 +1,7 @@
 package com.gameware.game.states;
 
 import com.badlogic.gdx.Gdx;
+import com.badlogic.gdx.Input;
 import com.badlogic.gdx.graphics.Color;
 import com.badlogic.gdx.graphics.Pixmap;
 import com.badlogic.gdx.graphics.Texture;
@@ -127,7 +128,7 @@ public class FinishedTournamentState extends State {
 
             }
         };
-        dialog.text("Do you want do leave\n"+tournament.getName()+"?").pad(padding);
+        dialog.text("Do you want to leave\n"+tournament.getName()+"?").pad(padding);
         dialog.button("Yes", true).pad(padding); //sends "true" as the result
         dialog.button("No", false).pad(padding);  //sends "false" as the result
     }
@@ -144,11 +145,17 @@ public class FinishedTournamentState extends State {
     }
 
     @Override
-    protected void handleInput() { }
+    protected void handleInput() {
+        if (Gdx.input.isKeyJustPressed(Input.Keys.BACK)){
+            handleBackBtnClick();
+        }
+    }
 
     @Override
     public void update(float dt) {
         Gdx.input.setInputProcessor(stage);
+        Gdx.input.setCatchBackKey(true);
+        handleInput();
         stage.act(dt);
     }
 
diff --git a/frontend/core/src/com/gameware/game/states/LoginState.java b/frontend/core/src/com/gameware/game/states/LoginState.java
index fa9804c7766882f1f87db93da343dd5309605f9d..d4721acf8fbed35086a2a77a738598afab5f6ac5 100644
--- a/frontend/core/src/com/gameware/game/states/LoginState.java
+++ b/frontend/core/src/com/gameware/game/states/LoginState.java
@@ -1,11 +1,9 @@
 package com.gameware.game.states;
 
 import com.badlogic.gdx.Gdx;
-import com.badlogic.gdx.Input;
 import com.badlogic.gdx.graphics.g2d.SpriteBatch;
 import com.badlogic.gdx.scenes.scene2d.InputEvent;
 import com.badlogic.gdx.scenes.scene2d.InputListener;
-import com.badlogic.gdx.scenes.scene2d.ui.Dialog;
 import com.badlogic.gdx.scenes.scene2d.ui.Label;
 import com.badlogic.gdx.scenes.scene2d.ui.Table;
 import com.badlogic.gdx.scenes.scene2d.ui.TextButton;
@@ -22,8 +20,8 @@ public class LoginState extends State {
 
     private Table table;
 
-    private Label gameNameText = new Label("GameWare", skin, "big");
-    private Label stateTitleText = new Label("Log in / Create User", skin, "big");
+    private Label stateNameLabel = new Label("GameWare", skin, "big");
+    private Label secondStateNameLabel = new Label("Log in / Create User", skin, "big");
 
     private String usernameInputText = "Username";
     private TextField usernameInputField;
@@ -105,11 +103,12 @@ public class LoginState extends State {
         table = new Table();
         table.setFillParent(true);
         table.setBackground(background);
-        gameNameText.setFontScale(titleFontBigScale);
 
-        table.add(gameNameText).spaceBottom(spacingOnBottomInputFIeld);
+        stateNameLabel.setFontScale(titleFontBigScale);
+
+        table.add(stateNameLabel).spaceBottom(spacingOnBottomInputFIeld);
         table.row();
-        table.add(stateTitleText).spaceBottom(spacingOnBottomInputFIeld);
+        table.add(secondStateNameLabel).spaceBottom(spacingOnBottomInputFIeld);
         table.row();
         table.add(makeUserInputField()).size(inputFieldWidth, inputFieldHeight).spaceBottom(spacingOnBottom);
         table.row();
diff --git a/frontend/core/src/com/gameware/game/states/MenuState.java b/frontend/core/src/com/gameware/game/states/MenuState.java
index 4a53d254c75b98f7acabd8104e18f22dc8c932c2..ea9fa85f47a6b42fb24a39686900101de7dcc9e7 100644
--- a/frontend/core/src/com/gameware/game/states/MenuState.java
+++ b/frontend/core/src/com/gameware/game/states/MenuState.java
@@ -1,6 +1,7 @@
 package com.gameware.game.states;
 
 import com.badlogic.gdx.Gdx;
+import com.badlogic.gdx.Input;
 import com.badlogic.gdx.graphics.g2d.SpriteBatch;
 import com.badlogic.gdx.scenes.scene2d.InputEvent;
 import com.badlogic.gdx.scenes.scene2d.ui.Label;
@@ -44,11 +45,10 @@ public class MenuState extends State{
         Table innerTable = new Table();
         innerTable.add(makeHighScoreBtn()).size(buttonWidth, buttonHeight).spaceBottom(spacingOnBottomInputFIeld).spaceRight(spacingOnBottom);
         innerTable.add(makeOptionsBtn()).size(buttonWidth, buttonHeight).spaceBottom(spacingOnBottomInputFIeld);
-        innerTable.row();
-        innerTable.add(makeLogOutBtn()).spaceBottom(spacingOnBottom);
         table.add(innerTable);
 
         stage.addActor(table);
+        stage.addActor(makeLogOutBtn());
     }
 
     private TextButton makeSinglePlayerBtn(){
@@ -97,15 +97,22 @@ public class MenuState extends State{
             @Override
             public void clicked(InputEvent e, float x, float y){ handleLogOutBtnClick(); }
         });
+        logOutBtn.setPosition(backBtnPlacementX, backBtnPlacementY);
         return logOutBtn;
     }
 
     @Override
-    protected void handleInput() { }
+    protected void handleInput() {
+        if (Gdx.input.isKeyJustPressed(Input.Keys.BACK)){
+            handleLogOutBtnClick();
+        }
+    }
 
     @Override
     public void update(float dt) {
         Gdx.input.setInputProcessor(stage);
+        Gdx.input.setCatchBackKey(true);
+        handleInput();
         stage.act(dt);
     }
 
diff --git a/frontend/core/src/com/gameware/game/states/OptionsState.java b/frontend/core/src/com/gameware/game/states/OptionsState.java
index c1f4d76e6e62bfb29a9526fcfee3dce756bd0420..501cded67b1a89fef142dea8ff41c887b8642864 100644
--- a/frontend/core/src/com/gameware/game/states/OptionsState.java
+++ b/frontend/core/src/com/gameware/game/states/OptionsState.java
@@ -1,6 +1,7 @@
 package com.gameware.game.states;
 
 import com.badlogic.gdx.Gdx;
+import com.badlogic.gdx.Input;
 import com.badlogic.gdx.graphics.g2d.SpriteBatch;
 import com.badlogic.gdx.scenes.scene2d.InputEvent;
 import com.badlogic.gdx.scenes.scene2d.ui.CheckBox;
@@ -9,6 +10,7 @@ import com.badlogic.gdx.scenes.scene2d.ui.Skin;
 import com.badlogic.gdx.scenes.scene2d.ui.Table;
 import com.badlogic.gdx.scenes.scene2d.ui.TextButton;
 import com.badlogic.gdx.scenes.scene2d.utils.ClickListener;
+import com.badlogic.gdx.utils.Scaling;
 import com.gameware.game.GameWare;
 import com.gameware.game.models.Game;
 
@@ -17,6 +19,7 @@ public class OptionsState extends State {
     private Table table;
 
     private int spacingOnBottom = Gdx.graphics.getHeight()/25;
+    private Label stateNameLabel = new Label("Options", skin, "big");
 
     private String backBtnText = "Back";
     private String musicToggleLabelText = "Music on/off";
@@ -31,11 +34,16 @@ public class OptionsState extends State {
 
     @Override
     protected void handleInput() {
-
+        if (Gdx.input.isKeyJustPressed(Input.Keys.BACK)){
+            handleBackBtnClick();
+        }
     }
 
     @Override
     public void update(float dt) {
+        Gdx.input.setInputProcessor(stage);
+        Gdx.input.setCatchBackKey(true);
+        handleInput();
         stage.act(dt);
     }
 
@@ -68,6 +76,11 @@ public class OptionsState extends State {
     private void makeStage(){
         table = new Table();
         table.setFillParent(true);
+        table.setBackground(background);
+
+        stateNameLabel.setFontScale(titleFontBigScale);
+        table.add(stateNameLabel).spaceBottom(spacingOnBottomInputFIeld);
+        table.row();
 
         table.row();
         table.add(makeLabel(musicToggleLabelText,skin)).spaceBottom(spacingOnBottom);
@@ -82,12 +95,12 @@ public class OptionsState extends State {
         //table.add(makeDarkModeCheckBox(skin)).spaceBottom(spacingOnBottom);
 
         table.row();
-        table.add(makeBackBtn(skin));
 
         stage.addActor(table);
+        stage.addActor(makeBackBtn());
     }
 
-    private TextButton makeBackBtn(Skin skin){
+    private TextButton makeBackBtn(){
         TextButton backBtn = new TextButton(backBtnText, skin);
         backBtn.addListener(new ClickListener() {
             @Override
@@ -95,6 +108,7 @@ public class OptionsState extends State {
                 handleBackBtnClick();
             }
         });
+        backBtn.setPosition(backBtnPlacementX, backBtnPlacementY);
         return backBtn;
     }
 
@@ -105,7 +119,8 @@ public class OptionsState extends State {
 
     private CheckBox makeMusicCheckBox(Skin skin){
         CheckBox musicToggle = new CheckBox("",skin);
-        musicToggle.getImage().setScale(2,2);
+        musicToggle.getImage().setScaling(Scaling.fill);
+        musicToggle.getImageCell().size(Gdx.graphics.getWidth()/10);
         if((GameWare.getInstance().getMusicOn() && !musicToggle.isChecked()) || (!GameWare.getInstance().getMusicOn() && musicToggle.isChecked())){
             musicToggle.toggle();
         }
@@ -118,12 +133,15 @@ public class OptionsState extends State {
 
     private CheckBox makeSoundEffectCheckBox(Skin skin){
         CheckBox soundEffectToggle = new CheckBox("",skin);
+        soundEffectToggle.getImage().setScaling(Scaling.fill);
+        soundEffectToggle.getImageCell().size(Gdx.graphics.getWidth()/10);
         soundEffectToggle.addListener(new ClickListener() {
             @Override
             public void clicked(InputEvent e, float x, float y){ GameWare.getInstance().toggleSoundEffects(); }
         });
-        soundEffectToggle.getImage().setScale(2,2);
-        soundEffectToggle.toggle();
+        if((GameWare.getInstance().getSoundEffects() && !soundEffectToggle.isChecked()) || (!GameWare.getInstance().getSoundEffects() && soundEffectToggle.isChecked())){
+            soundEffectToggle.toggle();
+        }
         return soundEffectToggle;
     }
 
diff --git a/frontend/core/src/com/gameware/game/states/PlayStateTemplate.java b/frontend/core/src/com/gameware/game/states/PlayStateTemplate.java
index 9bdb537deff383c0d2008fd15c460cb0b2a915d1..83bae43491a5be273acd8d720140af244029f703 100644
--- a/frontend/core/src/com/gameware/game/states/PlayStateTemplate.java
+++ b/frontend/core/src/com/gameware/game/states/PlayStateTemplate.java
@@ -1,9 +1,11 @@
 package com.gameware.game.states;
 
 
+import com.badlogic.gdx.graphics.Texture;
 import com.gameware.game.GameWare;
 import com.gameware.game.QueryIntermediate;
 import com.gameware.game.models.Round;
+import com.gameware.game.models.RoundCheck;
 import com.gameware.game.models.Tournament;
 
 import java.io.IOException;
@@ -13,8 +15,9 @@ public abstract class PlayStateTemplate extends State {
     private int score;
     private Round round = null;
     private Tournament tournament = null;
-    private Round nextRound = null;
+    private Round updatedRound = null;
     protected float totalGameTime = 30f;
+    protected Texture screenshot = null;
 
     public PlayStateTemplate(GameStateManager gsm){
         super(gsm);
@@ -30,24 +33,50 @@ public abstract class PlayStateTemplate extends State {
 
     public void gameDone(){
         String id = "";
-            for (String key : GameWare.getInstance().getGameIdToPlayState().keySet()){
-                if ( GameWare.getInstance().getGameIdToPlayState().get(key) instanceof ColorRushState){
-                    id = key;
-                    break;
-                }
+        //Find the id to the game just played
+        for (String key : GameWare.getInstance().getGameIdToPlayState().keySet()){
+            if ( GameWare.getInstance().getGameIdToPlayState().get(key).getClass() == this.getClass()){
+                id = key;
+                break;
             }
+        }
         try {
             this.postScore(id);
         }catch(Exception e){
             System.out.println(e);
         }
-        GameWare.getInstance().updateGameMap(id, new ColorRushState(gsm));
+        try {
+            //Add new instance of the game into the HashMap in GameWare
+            GameWare.getInstance().updateGameMap(id, this.getClass().getConstructor(GameStateManager.class).newInstance(gsm));
+        }catch(Exception e){
+            e.printStackTrace();
+        }
+
+        RoundCheck rc = null;
+        try{
+            rc = QueryIntermediate.doRoundCheck(tournament.get_id());
+        }catch(Exception e){
+            e.printStackTrace();
+        }
         if(round == null) {
+            //Singleplayer
             gsm.set(new ScoreState(gsm, this.score, new SinglePlayerSelectGameState(gsm)));
+        } else if(!rc.isActive() || (updatedRound.getTournamentPoints() != 0 && updatedRound.getRoundNr() == tournament.getTotalGames())){
+            //Tournament finished
+            gsm.set(new ScoreState(gsm, this.score, new FinishedTournamentState(gsm, tournament)));
         } else{
-//            TODO: change when backend gives updated round object
-            gsm.set(new ScoreState(gsm, this.score, new ViewTournamentState(gsm, tournament, nextRound)));
-//            gsm.set(new ScoreState(gsm, this.score, new CreateJoinTournamentState(gsm)));
+            //Tournament not finished
+            if(updatedRound.getTournamentPoints() != 0) {
+                try {
+                    //Get new round if ready
+                    Round nextRound = QueryIntermediate.getRoundFromTournament(tournament.get_id(), GameWare.getInstance().getPlayer().getId(), updatedRound.getRoundNr()+1);
+                    gsm.set(new ScoreState(gsm, this.score, new ViewTournamentState(gsm, tournament, nextRound)));
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
+            } else {
+                gsm.set(new ScoreState(gsm, this.score, new ViewTournamentState(gsm, tournament, updatedRound)));
+            }
         }
     }
 
@@ -59,7 +88,7 @@ public abstract class PlayStateTemplate extends State {
         if(round==null) {
             QueryIntermediate.postHighscore(GameWare.getInstance().getPlayer().getId(), gameId, this.score);
         } else{
-            nextRound = QueryIntermediate.putRoundScore(round.get_id(),tournament.get_id(), this.score);
+            updatedRound = QueryIntermediate.putRoundScore(round.get_id(),tournament.get_id(), this.score);
         }
     }
 }
diff --git a/frontend/core/src/com/gameware/game/states/SinglePlayerSelectGameState.java b/frontend/core/src/com/gameware/game/states/SinglePlayerSelectGameState.java
index 414bd67f73ccd67a89e0a7ea9285fb891d2fb788..908a6662fa914105d5f9c9e9766ae7d3a8e4bf08 100644
--- a/frontend/core/src/com/gameware/game/states/SinglePlayerSelectGameState.java
+++ b/frontend/core/src/com/gameware/game/states/SinglePlayerSelectGameState.java
@@ -1,30 +1,41 @@
 package com.gameware.game.states;
 
 import com.badlogic.gdx.Gdx;
+import com.badlogic.gdx.Input;
+import com.badlogic.gdx.graphics.Color;
+import com.badlogic.gdx.graphics.Pixmap;
+import com.badlogic.gdx.graphics.Texture;
 import com.badlogic.gdx.graphics.g2d.SpriteBatch;
+import com.badlogic.gdx.graphics.g2d.TextureRegion;
 import com.badlogic.gdx.scenes.scene2d.InputEvent;
+import com.badlogic.gdx.scenes.scene2d.ui.Image;
 import com.badlogic.gdx.scenes.scene2d.ui.Label;
+import com.badlogic.gdx.scenes.scene2d.ui.ScrollPane;
 import com.badlogic.gdx.scenes.scene2d.ui.Table;
 import com.badlogic.gdx.scenes.scene2d.ui.TextButton;
 import com.badlogic.gdx.scenes.scene2d.utils.ClickListener;
+import com.badlogic.gdx.scenes.scene2d.utils.TextureRegionDrawable;
 import com.gameware.game.GameWare;
 import com.gameware.game.QueryIntermediate;
 import com.gameware.game.models.Game;
-import com.gameware.game.models.Tournament;
 
 import java.io.IOException;
 import java.util.ArrayList;
-import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
 public class SinglePlayerSelectGameState extends State {
 
     private Table table;
+    private Table innerTable;
+    private ScrollPane scrollPane;
     private List<Game> games = new ArrayList<>();
 
     private final String backBtnText = "Back";
 
+    private Label stateNameLabel = new Label("Singleplayer", skin, "big");
+    private Label secondStateNameLabel = new Label("Select game", skin, "big");
+
     protected SinglePlayerSelectGameState(GameStateManager gsm) {
         super(gsm);
         try {
@@ -33,31 +44,62 @@ public class SinglePlayerSelectGameState extends State {
             System.out.println(e);
         }
 
+        makeStage();
+    }
+
+
+    private void makeStage(){
         table = new Table();
         table.setFillParent(true);
+        table.setBackground(background);
+        stateNameLabel.setFontScale(titleFontBigScale);
 
+        table.add(stateNameLabel).spaceBottom(spacingOnBottomInputFIeld);
         table.row();
+        table.add(secondStateNameLabel).spaceBottom(spacingOnBottom);
+        table.row();
+
+        innerTable = new Table();
+
+        Pixmap bgPixmap = new Pixmap(1,1, Pixmap.Format.RGB565);
+        bgPixmap.setColor(Color.SKY);
+        bgPixmap.fill();
+        TextureRegionDrawable textureRegionDrawableBg = new TextureRegionDrawable(new TextureRegion(new Texture(bgPixmap)));
+        innerTable.setBackground(textureRegionDrawableBg);
 
         for (Game g : games){
-            TextButton gameBtn = new TextButton(g.getName(), skin);
+            innerTable.add(new Image(GameWare.getInstance().getGameIdToPlayState().get(g.getId()).screenshot)).pad(spacingOnBottom);
+            Table innerInnerTable = new Table();
+            innerInnerTable.add(new Label(g.getName(),skin)).spaceBottom(spacingOnBottom);
+            innerInnerTable.row();
+            TextButton gameBtn = new TextButton("Play!", skin);
             gameBtn.addListener(new SinglePlayerSelectGameState.MyClickListener(g));
-            table.add(gameBtn).spaceBottom(spacingOnBottom);
-            table.row();
+            innerInnerTable.add(gameBtn);
+            innerTable.add(innerInnerTable);
+            innerTable.row();
         }
 
-        table.add(makeBackBtn()).spaceBottom(spacingOnBottom);
-        stage.addActor(table);
+        scrollPane = new ScrollPane(innerTable, skin);
+        table.add(scrollPane).spaceBottom(spacingOnBottom);
+        table.getCell(scrollPane).size(Gdx.graphics.getWidth()/1.3f, Gdx.graphics.getHeight()/3f);
+        table.row();
 
+        stage.addActor(table);
+        stage.addActor(makeBackBtn());
     }
 
     @Override
     protected void handleInput() {
-
+        if (Gdx.input.isKeyJustPressed(Input.Keys.BACK)){
+            handleBackBtnClick();
+        }
     }
 
     @Override
     public void update(float dt) {
         Gdx.input.setInputProcessor(stage);
+        Gdx.input.setCatchBackKey(true);
+        handleInput();
         stage.act();
     }
 
@@ -82,9 +124,11 @@ public class SinglePlayerSelectGameState extends State {
             @Override
             public void clicked(InputEvent e, float x, float y){ handleBackBtnClick(); }
         });
+        backBtn.setPosition(backBtnPlacementX, backBtnPlacementY);
         return backBtn;
     }
 
+
     private void handleBackBtnClick(){
         gsm.set(new MenuState(gsm));
     }
@@ -105,6 +149,7 @@ public class SinglePlayerSelectGameState extends State {
             this.game = game;
         }
 
+        @Override
         public void clicked(InputEvent event, float x, float y) {
             Map<String, PlayStateTemplate> map = GameWare.getInstance().getGameIdToPlayState();
             State s = map.get(game.getId());
diff --git a/frontend/core/src/com/gameware/game/states/State.java b/frontend/core/src/com/gameware/game/states/State.java
index 4ac47b3576e71bd5592e6b1376f458852af5f731..f75015d12f4118b228eb2e7ba7974977e0291bae 100644
--- a/frontend/core/src/com/gameware/game/states/State.java
+++ b/frontend/core/src/com/gameware/game/states/State.java
@@ -24,11 +24,16 @@ public abstract class State {
     protected static final float spacingOnBottomInputFIeld = Gdx.graphics.getHeight()/15;
     protected static final int buttonWidth = Gdx.graphics.getWidth()/3;
     protected static final int buttonHeight = Gdx.graphics.getHeight()/12;
+    protected static final int backBtnPlacementX = Gdx.graphics.getWidth()/18;
+    protected static final int backBtnPlacementY = Gdx.graphics.getHeight()/25;
+
     protected TextureRegionDrawable background = new TextureRegionDrawable(new TextureRegion(new Texture("bg1.jpg")));
     protected TextureRegionDrawable backgroundLighter = new TextureRegionDrawable(new TextureRegion(new Texture("bg1_lighter.jpg")));
     protected TextureRegionDrawable backgroundScore = new TextureRegionDrawable(new TextureRegion(new Texture("bg_score.jpg")));
+//    protected TextureRegionDrawable buttonDisabledDrawable = new TextureRegionDrawable(new TextureRegion(new Texture(Gdx.files.internal("glassy/raw/button-disabled.png"))));
     protected TextureRegionDrawable backgroundFinTourn = new TextureRegionDrawable(new TextureRegion(new Texture("bg1_finTourn.jpg")));
 
+
     protected State(GameStateManager gsm){
         this.gsm = gsm;
         cam = new OrthographicCamera();
diff --git a/frontend/core/src/com/gameware/game/states/TournamentHighScoreState.java b/frontend/core/src/com/gameware/game/states/TournamentHighScoreState.java
index a3332125d0a31faccdd4ffca95bbbdc16330d87d..bdb7ee2bf0f8990bd2b660bbe03abae78dedf60d 100644
--- a/frontend/core/src/com/gameware/game/states/TournamentHighScoreState.java
+++ b/frontend/core/src/com/gameware/game/states/TournamentHighScoreState.java
@@ -1,5 +1,7 @@
 package com.gameware.game.states;
 
+import com.badlogic.gdx.Gdx;
+import com.badlogic.gdx.Input;
 import com.badlogic.gdx.graphics.Color;
 import com.badlogic.gdx.graphics.Pixmap;
 import com.badlogic.gdx.graphics.Texture;
@@ -83,10 +85,9 @@ public class TournamentHighScoreState extends State{
         }
         scrollPane = new ScrollPane(innerTable, skin);
         table.add(scrollPane).spaceBottom(spacingOnBottomInputFIeld).spaceBottom(spacingOnBottomInputFIeld);
-        table.row();
-        table.add(makeBackBtn()).spaceBottom(spacingOnBottom);
 
         stage.addActor(table);
+        stage.addActor(makeBackBtn());
     }
 
     private TextButton makeBackBtn(){
@@ -97,6 +98,7 @@ public class TournamentHighScoreState extends State{
                 handleBackBtnClick();
             }
         });
+        backBtn.setPosition(backBtnPlacementX, backBtnPlacementY);
         return backBtn;
     }
 
@@ -106,10 +108,17 @@ public class TournamentHighScoreState extends State{
 
 
     @Override
-    protected void handleInput() { }
+    protected void handleInput() {
+        if (Gdx.input.isKeyJustPressed(Input.Keys.BACK)){
+            handleBackBtnClick();
+        }
+    }
 
     @Override
     public void update(float dt) {
+        Gdx.input.setInputProcessor(stage);
+        Gdx.input.setCatchBackKey(true);
+        handleInput();
         stage.act(dt);
     }
 
diff --git a/frontend/core/src/com/gameware/game/states/ViewHighScoreForGameState.java b/frontend/core/src/com/gameware/game/states/ViewHighScoreForGameState.java
index cf8617a8952cca42b68d9393f167007239dbb6a9..ae36a7bfc04bc0efd431f40b7a6f91498d06cfa5 100644
--- a/frontend/core/src/com/gameware/game/states/ViewHighScoreForGameState.java
+++ b/frontend/core/src/com/gameware/game/states/ViewHighScoreForGameState.java
@@ -1,13 +1,19 @@
 package com.gameware.game.states;
 
 import com.badlogic.gdx.Gdx;
+import com.badlogic.gdx.Input;
+import com.badlogic.gdx.graphics.Color;
+import com.badlogic.gdx.graphics.Pixmap;
+import com.badlogic.gdx.graphics.Texture;
 import com.badlogic.gdx.graphics.g2d.SpriteBatch;
+import com.badlogic.gdx.graphics.g2d.TextureRegion;
 import com.badlogic.gdx.scenes.scene2d.InputEvent;
 import com.badlogic.gdx.scenes.scene2d.ui.Label;
 import com.badlogic.gdx.scenes.scene2d.ui.ScrollPane;
 import com.badlogic.gdx.scenes.scene2d.ui.Table;
 import com.badlogic.gdx.scenes.scene2d.ui.TextButton;
 import com.badlogic.gdx.scenes.scene2d.utils.ClickListener;
+import com.badlogic.gdx.scenes.scene2d.utils.TextureRegionDrawable;
 import com.gameware.game.GameWare;
 import com.gameware.game.QueryIntermediate;
 import com.gameware.game.models.Game;
@@ -30,10 +36,17 @@ public class ViewHighScoreForGameState extends State {
     private double playerHS;
     private static List<Highscore> highscores = new ArrayList<>();
     private Boolean isNoHS = true;
+    private Label gameNameText;
+    private Label stateNameText;
+    private ScrollPane scrollPane;
 
     private String backBtnText = "Back";
-    private String playerLabelText = "You";
+    private String playerLabelText = "Your score: ";
     private String noHSLabelText = "";
+    private String globalHighScoresText = "Global High Scores";
+    private String colOneText = "Place";
+    private String colTwoText = "Name";
+    private String colThreeText = "Score";
 
     protected ViewHighScoreForGameState(GameStateManager gsm, Game game) {
         super(gsm);
@@ -51,16 +64,24 @@ public class ViewHighScoreForGameState extends State {
             isNoHS = true;
         }
 
+        gameNameText = new Label(game.getName(), skin, "big");
+        stateNameText = new Label(globalHighScoresText, skin, "big");
+
         makeStage();
     }
 
     @Override
     protected void handleInput() {
-
+        if (Gdx.input.isKeyJustPressed(Input.Keys.BACK)){
+            handleBackBtnClick();
+        }
     }
 
     @Override
     public void update(float dt) {
+        Gdx.input.setInputProcessor(stage);
+        Gdx.input.setCatchBackKey(true);
+        handleInput();
         stage.act(dt);
     }
 
@@ -87,6 +108,7 @@ public class ViewHighScoreForGameState extends State {
                 handleBackBtnClick();
             }
         });
+        backBtn.setPosition(backBtnPlacementX, backBtnPlacementY);
         return backBtn;
     }
 
@@ -106,7 +128,25 @@ public class ViewHighScoreForGameState extends State {
     private void makeStage() {
         outerTable = new Table();
         outerTable.setFillParent(true);
+
+
+        outerTable.setBackground(background);
+        stateNameText.setFontScale(tinierTitleFontBigScale);
+        gameNameText.setFontScale(tinierTitleFontBigScale);
+
+        outerTable.add(gameNameText);
+        outerTable.row();
+        outerTable.add(stateNameText).spaceBottom(spacingOnBottomInputFIeld);
+        outerTable.row();
+
         innerTable = new Table();
+        Pixmap bgPixmap = new Pixmap(1,1, Pixmap.Format.RGB565);
+        bgPixmap.setColor(Color.SKY);
+        bgPixmap.fill();
+        TextureRegionDrawable textureRegionDrawableBg = new TextureRegionDrawable(new TextureRegion(new Texture(bgPixmap)));
+        innerTable.setBackground(textureRegionDrawableBg);
+
+        innerTable.setFillParent(true);
 
         if(isNoHS){
             noHSLabelText = "No high scores recorded.";
@@ -124,10 +164,23 @@ public class ViewHighScoreForGameState extends State {
         outerTable.row();
         outerTable.add(hsPane).spaceBottom(spacingOnBottomInputFIeld);
         outerTable.getCell(hsPane).size(Gdx.graphics.getWidth()/1.1f, Gdx.graphics.getWidth()/2.5f);
+
         outerTable.row();
-        outerTable.add(makeBackBtn()).spaceBottom(spacingOnBottom);
+        Table secondInnerTable = new Table();
+        Pixmap secondBgPixmap = new Pixmap(1,1, Pixmap.Format.RGB565);
+        secondBgPixmap.setColor(Color.SKY);
+        secondBgPixmap.fill();
+        TextureRegionDrawable secondTextureRegionDrawableBg = new TextureRegionDrawable(new TextureRegion(new Texture(secondBgPixmap)));
+        secondInnerTable.setBackground(secondTextureRegionDrawableBg);
+
+        Label playerLabel = new Label(playerLabelText,skin);
+        Label playerScoreLabel = new Label(String.valueOf(playerHS),skin);
+        secondInnerTable.add(playerLabel).spaceTop(spacingOnBottom).pad(50);
+        secondInnerTable.add(playerScoreLabel).spaceTop(spacingOnBottom).pad(50);
+        outerTable.add(secondInnerTable);
 
         stage.addActor(outerTable);
+        stage.addActor(makeBackBtn());
     }
 
     private void createHighScoreList() {
@@ -139,12 +192,17 @@ public class ViewHighScoreForGameState extends State {
             e.printStackTrace();
         }
 
+        innerTable.add(new Label(colOneText, skin));
+        innerTable.add(new Label(colTwoText, skin)).spaceRight(spacingOnBottom);
+        innerTable.add(new Label(colThreeText, skin));
+        innerTable.row();
+
         int length = Math.min(highscores.size(),5);
 
         for (int i = 0; i < length; i++){
             Highscore hs = highscores.get(i);
 
-            Label placementLabel = new Label(String.valueOf(i+1)+". place: ",skin);
+            Label placementLabel = new Label(String.valueOf(i+1)+". ",skin);
             Label nameLabel = new Label(hs.getName()+" ",skin);
             Label scoreLabel = new Label(String.valueOf(hs.getValue()),skin);
 
@@ -153,13 +211,6 @@ public class ViewHighScoreForGameState extends State {
             innerTable.add(scoreLabel);
             innerTable.row();
         }
-
-
-        Label playerLabel = new Label(playerLabelText,skin);
-        Label playerScoreLabel = new Label(String.valueOf(playerHS),skin);
-        innerTable.add(playerLabel).spaceTop(spacingOnBottom);
-        innerTable.add(playerScoreLabel).spaceTop(spacingOnBottom);
-        innerTable.row();
     }
 
 }
\ No newline at end of file
diff --git a/frontend/core/src/com/gameware/game/states/ViewHighScoreState.java b/frontend/core/src/com/gameware/game/states/ViewHighScoreState.java
index 1581ab299d45bd28f4ad0a4df81af07ca4f27c72..05f25908c2670975c6e1b25dbff647062a58d67e 100644
--- a/frontend/core/src/com/gameware/game/states/ViewHighScoreState.java
+++ b/frontend/core/src/com/gameware/game/states/ViewHighScoreState.java
@@ -1,27 +1,38 @@
 package com.gameware.game.states;
 
+import com.badlogic.gdx.Gdx;
+import com.badlogic.gdx.Input;
+import com.badlogic.gdx.graphics.Color;
+import com.badlogic.gdx.graphics.Pixmap;
+import com.badlogic.gdx.graphics.Texture;
 import com.badlogic.gdx.graphics.g2d.SpriteBatch;
+import com.badlogic.gdx.graphics.g2d.TextureRegion;
 import com.badlogic.gdx.scenes.scene2d.InputEvent;
 import java.util.List;
-import com.badlogic.gdx.scenes.scene2d.ui.Skin;
+
+import com.badlogic.gdx.scenes.scene2d.ui.Image;
+import com.badlogic.gdx.scenes.scene2d.ui.Label;
+import com.badlogic.gdx.scenes.scene2d.ui.ScrollPane;
 import com.badlogic.gdx.scenes.scene2d.ui.Table;
 import com.badlogic.gdx.scenes.scene2d.ui.TextButton;
 import com.badlogic.gdx.scenes.scene2d.utils.ClickListener;
-import com.gameware.game.QueryIntermediate;
+import com.badlogic.gdx.scenes.scene2d.utils.TextureRegionDrawable;
 import com.gameware.game.GameWare;
 import com.gameware.game.models.Game;
 import java.io.IOException;
 
-
-
-import java.io.IOException;
-
 public class ViewHighScoreState extends State {
 
     private Table table;
+    private Table innerTable;
+    private ScrollPane scrollPane;
     private List<Game> games;
 
     private String backBtnText = "Back";
+    private String BtnText = "View High Score!";
+
+    private Label stateNameLabel = new Label("High Scores", skin, "big");
+    private Label secondStateNameLabel = new Label("Select game", skin, "big");
 
     public ViewHighScoreState(GameStateManager gsm) {
         super(gsm);
@@ -33,29 +44,62 @@ public class ViewHighScoreState extends State {
             e.printStackTrace();
         }
 
+        makeStage();
+    }
+
+    private void makeStage(){
         table = new Table();
         table.setFillParent(true);
 
+        table.setBackground(background);
+        stateNameLabel.setFontScale(titleFontBigScale);
+
+        table.add(stateNameLabel).spaceBottom(spacingOnBottomInputFIeld);
+        table.row();
+        table.add(secondStateNameLabel).spaceBottom(spacingOnBottom);
         table.row();
 
+        innerTable = new Table();
+
+        Pixmap bgPixmap = new Pixmap(1,1, Pixmap.Format.RGB565);
+        bgPixmap.setColor(Color.SKY);
+        bgPixmap.fill();
+        TextureRegionDrawable textureRegionDrawableBg = new TextureRegionDrawable(new TextureRegion(new Texture(bgPixmap)));
+        innerTable.setBackground(textureRegionDrawableBg);
+
         for (Game g : games){
-            TextButton gameBtn = new TextButton(g.getName(), skin);
+            innerTable.add(new Image(GameWare.getInstance().getGameIdToPlayState().get(g.getId()).screenshot)).pad(spacingOnBottom);
+            Table innerInnerTable = new Table();
+            innerInnerTable.add(new Label(g.getName(),skin)).spaceBottom(spacingOnBottom);
+            innerInnerTable.row();
+            TextButton gameBtn = new TextButton(BtnText, skin);
             gameBtn.addListener(new ViewHighScoreState.MyClickListener(g));
-            table.add(gameBtn).spaceBottom(spacingOnBottom);
-            table.row();
+            innerInnerTable.add(gameBtn);
+            innerTable.add(innerInnerTable);
+            innerTable.row();
         }
 
-        table.add(makeBackBtn()).spaceBottom(spacingOnBottom);
+        scrollPane = new ScrollPane(innerTable, skin);
+        table.add(scrollPane).spaceBottom(spacingOnBottom);
+        table.getCell(scrollPane).size(Gdx.graphics.getWidth()/1.2f, Gdx.graphics.getHeight()/3f);
+        table.row();
+
         stage.addActor(table);
+        stage.addActor(makeBackBtn());
     }
 
     @Override
     protected void handleInput() {
-
+        if (Gdx.input.isKeyJustPressed(Input.Keys.BACK)){
+            handleBackBtnClick();
+        }
     }
 
     @Override
     public void update(float dt) {
+        Gdx.input.setInputProcessor(stage);
+        Gdx.input.setCatchBackKey(true);
+        handleInput();
         stage.act(dt);
     }
 
@@ -80,6 +124,7 @@ public class ViewHighScoreState extends State {
             @Override
             public void clicked(InputEvent e, float x, float y){ handleBackBtnClick(); }
         });
+        backBtn.setPosition(backBtnPlacementX, backBtnPlacementY);
         return backBtn;
     }
 
diff --git a/frontend/core/src/com/gameware/game/states/ViewTournamentState.java b/frontend/core/src/com/gameware/game/states/ViewTournamentState.java
index dd9814c1194909e628f9f701017ce4217a942b31..7921084c889773ffd6a249a2e6da22067ad07713 100644
--- a/frontend/core/src/com/gameware/game/states/ViewTournamentState.java
+++ b/frontend/core/src/com/gameware/game/states/ViewTournamentState.java
@@ -1,9 +1,14 @@
 package com.gameware.game.states;
 
 import com.badlogic.gdx.Gdx;
+import com.badlogic.gdx.Input;
+import com.badlogic.gdx.graphics.Color;
+import com.badlogic.gdx.graphics.Texture;
 import com.badlogic.gdx.graphics.g2d.SpriteBatch;
 import com.badlogic.gdx.scenes.scene2d.InputEvent;
+import com.badlogic.gdx.scenes.scene2d.Touchable;
 import com.badlogic.gdx.scenes.scene2d.ui.Dialog;
+import com.badlogic.gdx.scenes.scene2d.ui.Image;
 import com.badlogic.gdx.scenes.scene2d.ui.Label;
 import com.badlogic.gdx.scenes.scene2d.ui.Table;
 import com.badlogic.gdx.scenes.scene2d.ui.TextButton;
@@ -27,11 +32,10 @@ public class ViewTournamentState extends State {
     private String leaveBtnText = "Leave";
     private String playBtnText = "Play Round";
     private String viewPointsBtnText = "View Points";
-    private String nrPlayersText = "Players in tournament";
-    private String roundsLeftText = "Rounds left";
+    private String nrPlayersText = "Players in tournament:";
+    private String roundsLeftText = "Rounds left:";
 
     public class LeaveClickListener extends ClickListener{
-        //TODO: if (tournamentpoints != null && currentRoundNr == (tournament.totalGames) -> gå til finished state
 
         public void clicked(InputEvent event, float x, float y) {
             handleLeaveBtnClick();
@@ -55,11 +59,13 @@ public class ViewTournamentState extends State {
 
         table.add(stateNameText).spaceBottom(spacingOnBottomInputFIeld);
         table.row();
-        if(round.isPlayed()){
-            table.add(new Label("You have aldready played\nWait for others to finish", skin)).spaceBottom(spacingOnBottomInputFIeld);
-        }else {
-            table.add(makePlayBtn()).size(buttonWidth*1.4f, buttonHeight*1.2f).spaceBottom(spacingOnBottomInputFIeld);
-        }
+
+        table.add(makePlayBtn()).size(buttonWidth*1.4f, buttonHeight*1.2f).spaceBottom(spacingOnBottom);
+
+        table.row();
+        PlayStateTemplate state = GameWare.getInstance().getGameIdToPlayState().get(round.getGameId());
+        table.add(new Image(state.screenshot)).spaceBottom(spacingOnBottomInputFIeld);
+
         table.row();
         table.add(new Label(nrPlayersText+" "+tournament.getPlayers().size(), skin));
         table.row();
@@ -71,11 +77,10 @@ public class ViewTournamentState extends State {
         leaveBtn.addListener(new LeaveClickListener());
         innerTable.add(leaveBtn).size(buttonWidth, buttonHeight).spaceBottom(spacingOnBottomInputFIeld).spaceRight(spacingOnBottom);
         innerTable.add(makeViewPointsBtn()).size(buttonWidth, buttonHeight).spaceBottom(spacingOnBottomInputFIeld);
-        innerTable.row();
-        innerTable.add(makeBackBtn());
         table.add(innerTable);
 
         stage.addActor(table);
+        stage.addActor(makeBackBtn());
 
         makeDialog();
     }
@@ -98,7 +103,7 @@ public class ViewTournamentState extends State {
 
             }
         };
-        dialog.text("Do you want do leave\n"+tournament.getName()+"?").pad(padding);
+        dialog.text("Do you want to leave\n"+tournament.getName()+"?").pad(padding);
         dialog.button("Yes", true).pad(padding); //sends "true" as the result
         dialog.button("No", false).pad(padding);  //sends "false" as the result
     }
@@ -111,19 +116,32 @@ public class ViewTournamentState extends State {
                 handleBackBtnClick();
             }
         });
+        backBtn.setPosition(backBtnPlacementX, backBtnPlacementY);
         return backBtn;
     }
 
     private TextButton makePlayBtn(){
-        TextButton playBtn = new TextButton(playBtnText, skin);
-        playBtn.addListener(new ClickListener() {
-            @Override
-            public void clicked(InputEvent e, float x, float y){
-                handlePlayBtnClick();
-            }
-        });
+        TextButton playBtn;
         if(round.isPlayed()){
-            playBtn.setDisabled(true);
+            TextButton.TextButtonStyle textButtonStyle = new TextButton.TextButtonStyle();
+            textButtonStyle.up = skin.newDrawable("button", Color.GRAY);
+            textButtonStyle.down = skin.newDrawable("button", Color.DARK_GRAY);
+            textButtonStyle.checked = skin.newDrawable("button", Color.DARK_GRAY);
+            textButtonStyle.over = skin.newDrawable("button", Color.LIGHT_GRAY);
+            textButtonStyle.font = skin.getFont("font-big");
+            textButtonStyle.fontColor = Color.LIGHT_GRAY;
+
+            playBtn = new TextButton(playBtnText, textButtonStyle);
+            playBtn.setTouchable(Touchable.disabled);
+        }
+        else{
+            playBtn = new TextButton(playBtnText, skin);
+            playBtn.addListener(new ClickListener() {
+                @Override
+                public void clicked(InputEvent e, float x, float y){
+                    handlePlayBtnClick();
+                }
+            });
         }
         return playBtn;
     }
@@ -140,11 +158,17 @@ public class ViewTournamentState extends State {
     }
 
     @Override
-    protected void handleInput() { }
+    protected void handleInput() {
+        if (Gdx.input.isKeyJustPressed(Input.Keys.BACK)){
+            handleBackBtnClick();
+        }
+    }
 
     @Override
     public void update(float dt) {
         Gdx.input.setInputProcessor(stage);
+        Gdx.input.setCatchBackKey(true);
+        handleInput();
         stage.act(dt);
     }