diff --git a/frontend/core/src/com/gameware/game/GameWare.java b/frontend/core/src/com/gameware/game/GameWare.java
index 10918e9e4bff559dd9542a0bae893ee523d3c819..a6648d865105a7bcc363785d94c5f0ef50246b28 100644
--- a/frontend/core/src/com/gameware/game/GameWare.java
+++ b/frontend/core/src/com/gameware/game/GameWare.java
@@ -16,7 +16,7 @@ import com.gameware.game.models.Player;
 import com.gameware.game.states.GameStateManager;
 import com.gameware.game.states.LoginState;
 import com.gameware.game.states.MenuState;
-import com.gameware.game.states.PlayStateTemplate;
+import com.gameware.game.states.game_states.PlayStateTemplate;
 
 import java.io.IOException;
 import java.lang.reflect.Constructor;
diff --git a/frontend/core/src/com/gameware/game/states/CreateNewTournamentState.java b/frontend/core/src/com/gameware/game/states/CreateNewTournamentState.java
index e470f42f61d2da79cf88488bdd7278d73cc8761e..0d347a7035afa01f1325f40b223a45998a372243 100644
--- a/frontend/core/src/com/gameware/game/states/CreateNewTournamentState.java
+++ b/frontend/core/src/com/gameware/game/states/CreateNewTournamentState.java
@@ -115,11 +115,11 @@ public class CreateNewTournamentState extends MenuStateTemplate {
         roundsPerGameSelectBox.setItems(1,2,3);
         startDelaySelectBox.setItems(1,2,3);
 
-        nameDialog = makeDialog(nameLabelQuestion);
-        timePerRoundDialog = makeDialog(timePerRoundLabelQuestion);
-        maxPlayersDialog = makeDialog(maxPlayersLabelQuestion);
-        roundsPerGameDialog = makeDialog(roundsPerGameLabelQuestion);
-        startDelayDialog = makeDialog(startDelayLabelQuestion);
+        nameDialog = makeQuestionIconDialog(nameLabelQuestion);
+        timePerRoundDialog = makeQuestionIconDialog(timePerRoundLabelQuestion);
+        maxPlayersDialog = makeQuestionIconDialog(maxPlayersLabelQuestion);
+        roundsPerGameDialog = makeQuestionIconDialog(roundsPerGameLabelQuestion);
+        startDelayDialog = makeQuestionIconDialog(startDelayLabelQuestion);
 
         makeStage();
     }
@@ -146,21 +146,21 @@ public class CreateNewTournamentState extends MenuStateTemplate {
         innerTable.pad(spacingLittle);
         innerTable.setBackground(backgroundTableBlueRounded);
 
-        innerTable.add(makeRow(nameLabel, nameDialog));
+        innerTable.add(makeTableWithLabelAndQuestionIcon(nameLabel, nameDialog));
         nameInputField.setMaxLength(9);
         innerTable.add(nameInputField).size(nameFieldWidth, inputFieldHeight);
         innerTable.row();
         removeKeyPadAtTouch();
-        innerTable.add(makeRow(timePerRoundLabel, timePerRoundDialog));
+        innerTable.add(makeTableWithLabelAndQuestionIcon(timePerRoundLabel, timePerRoundDialog));
         innerTable.add(timePerRoundSelectBox);
         innerTable.row();
-        innerTable.add(makeRow(maxPlayersLabel, maxPlayersDialog));
+        innerTable.add(makeTableWithLabelAndQuestionIcon(maxPlayersLabel, maxPlayersDialog));
         innerTable.add(maxPlayersSelectBox);
         innerTable.row();
-        innerTable.add(makeRow(roundsPerGameLabel, roundsPerGameDialog));
+        innerTable.add(makeTableWithLabelAndQuestionIcon(roundsPerGameLabel, roundsPerGameDialog));
         innerTable.add(roundsPerGameSelectBox);
         innerTable.row();
-        innerTable.add(makeRow(startDelayLabel, startDelayDialog));
+        innerTable.add(makeTableWithLabelAndQuestionIcon(startDelayLabel, startDelayDialog));
         innerTable.add(startDelaySelectBox);
         rootTable.add(innerTable).colspan(2);
         rootTable.row();
@@ -186,11 +186,11 @@ public class CreateNewTournamentState extends MenuStateTemplate {
                 continue;
             }
 
-            innerTable.add(new Image(GameWare.getInstance().getGameIdToPlayState().get(g.getId()).screenshot)).width(imageWidthAndHeigh).height(imageWidthAndHeigh);
+            innerTable.add(new Image(GameWare.getInstance().getGameIdToPlayState().get(g.getId()).getScreenshot())).width(imageWidthAndHeigh).height(imageWidthAndHeigh);
 
             Table innerInnerTable = new Table();
             innerInnerTable.defaults().space(spacingLittle);
-            innerInnerTable.add(makeRow(new Label(g.getName(), skin), makeDialog(new Label(g.getExplanation().replaceAll("\\\\n", "\n"), skin)))).spaceBottom(spacingLittle);
+            innerInnerTable.add(makeTableWithLabelAndQuestionIcon(new Label(g.getName(), skin), makeQuestionIconDialog(new Label(g.getExplanation().replaceAll("\\\\n", "\n"), skin)))).spaceBottom(spacingLittle);
             innerInnerTable.row();
 
             CheckBox gameCB = new CheckBox("",skin);
diff --git a/frontend/core/src/com/gameware/game/states/MenuStateTemplate.java b/frontend/core/src/com/gameware/game/states/MenuStateTemplate.java
index ec31c9f58c802e98d7b1b29abd302564812463dd..80700b7a92ccb7634f96fa6469f0bd489c25262b 100644
--- a/frontend/core/src/com/gameware/game/states/MenuStateTemplate.java
+++ b/frontend/core/src/com/gameware/game/states/MenuStateTemplate.java
@@ -70,6 +70,7 @@ public abstract class MenuStateTemplate extends State{
     @Override
     public void update(float dt){
         if(firstTimeRunningUpdate) {
+//            First time running update change input processor. Or else it won't work when states are stacked in the gsm
             Gdx.input.setInputProcessor(stage);
             Gdx.input.setCatchBackKey(true);
             firstTimeRunningUpdate = false;
@@ -121,7 +122,7 @@ public abstract class MenuStateTemplate extends State{
 
 //    Dialog methods
 
-    protected Table makeRow(Label label, final Dialog dialog){
+    protected Table makeTableWithLabelAndQuestionIcon(Label label, final Dialog dialog){
         Table table = new Table();
         table.add(label).spaceRight(spacingLittle/2);
         Image questionMarkImage = new Image(questionMark);
@@ -136,7 +137,7 @@ public abstract class MenuStateTemplate extends State{
         return table;
     }
 
-    protected Dialog makeDialog(Label label){
+    protected Dialog makeQuestionIconDialog(Label label){
         Dialog dialog = new Dialog("", skin, "dialog") {
             public void result(Object obj) { }
         };
diff --git a/frontend/core/src/com/gameware/game/states/OptionsState.java b/frontend/core/src/com/gameware/game/states/OptionsState.java
index eb67417a150c7f9edf9ccc9537652b7d2e87046b..eb13b34dd18c641cd5c5fb9baca045b86e8e5870 100644
--- a/frontend/core/src/com/gameware/game/states/OptionsState.java
+++ b/frontend/core/src/com/gameware/game/states/OptionsState.java
@@ -11,6 +11,7 @@ import com.badlogic.gdx.scenes.scene2d.utils.ClickListener;
 import com.badlogic.gdx.utils.Scaling;
 import com.gameware.game.GameWare;
 
+
 public class OptionsState extends MenuStateTemplate {
 
 //    Labels
@@ -27,7 +28,7 @@ public class OptionsState extends MenuStateTemplate {
 
     public OptionsState(GameStateManager gsm) {
         super(gsm);
-        stage.clear();
+
         makeStage();
     }
 
diff --git a/frontend/core/src/com/gameware/game/states/PauseState.java b/frontend/core/src/com/gameware/game/states/PauseState.java
index e178a21c2d567bd7e845ba66d57886771d130da3..767d2606f4421a0ba5c07b86d4dd87778fdfcb03 100644
--- a/frontend/core/src/com/gameware/game/states/PauseState.java
+++ b/frontend/core/src/com/gameware/game/states/PauseState.java
@@ -4,12 +4,12 @@ import com.badlogic.gdx.Gdx;
 import com.badlogic.gdx.graphics.Color;
 import com.badlogic.gdx.graphics.Texture;
 import com.badlogic.gdx.graphics.g2d.SpriteBatch;
-import com.badlogic.gdx.graphics.glutils.ShapeRenderer;
 import com.gameware.game.GameWare;
 import com.gameware.game.sprites.ConfirmationBox;
 import com.gameware.game.sprites.LoadingText;
 import com.gameware.game.sprites.PauseCircle;
 import com.gameware.game.sprites.PauseMenuButton;
+import com.gameware.game.states.game_states.PlayStateTemplate;
 
 import java.util.ArrayList;
 import java.util.List;
diff --git a/frontend/core/src/com/gameware/game/states/SinglePlayerSelectGameState.java b/frontend/core/src/com/gameware/game/states/SinglePlayerSelectGameState.java
index ecc2f9aa81786f651b313c9ce86574d5095809c1..cddb5af239f84f52e4cc473ce853485203f43f8e 100644
--- a/frontend/core/src/com/gameware/game/states/SinglePlayerSelectGameState.java
+++ b/frontend/core/src/com/gameware/game/states/SinglePlayerSelectGameState.java
@@ -11,6 +11,7 @@ import com.badlogic.gdx.scenes.scene2d.ui.TextButton;
 import com.badlogic.gdx.scenes.scene2d.utils.ClickListener;
 import com.gameware.game.GameWare;
 import com.gameware.game.models.Game;
+import com.gameware.game.states.game_states.PlayStateTemplate;
 
 import java.io.IOException;
 import java.util.ArrayList;
@@ -79,10 +80,10 @@ public class SinglePlayerSelectGameState extends MenuStateTemplate {
                 if(GameWare.getInstance().getGameIdToPlayState().get(g.getId()) == null){
                     continue;
                 }
-                innerTable.add(new Image(GameWare.getInstance().getGameIdToPlayState().get(g.getId()).screenshot)).width(imageWidthAndHeigh).height(imageWidthAndHeigh).pad(spacingLittle);
+                innerTable.add(new Image(GameWare.getInstance().getGameIdToPlayState().get(g.getId()).getScreenshot())).width(imageWidthAndHeigh).height(imageWidthAndHeigh).pad(spacingLittle);
 
                 Table innerInnerTable = new Table();
-                innerInnerTable.add(makeRow(new Label(g.getName(), skin), makeDialog(new Label(g.getExplanation().replaceAll("\\\\n", "\n"), skin)))).spaceBottom(spacingLittle);
+                innerInnerTable.add(makeTableWithLabelAndQuestionIcon(new Label(g.getName(), skin), makeQuestionIconDialog(new Label(g.getExplanation().replaceAll("\\\\n", "\n"), skin)))).spaceBottom(spacingLittle);
                 innerInnerTable.row();
 
                 TextButton gameBtn = new TextButton(playBtnText, makeTextButtonStyle(greenColor));
diff --git a/frontend/core/src/com/gameware/game/states/State.java b/frontend/core/src/com/gameware/game/states/State.java
index 383963103227b1b409695d640d24bb3ab24f1703..8a7a3633c078b1294073a64a447f0bd8b7f9c0ea 100644
--- a/frontend/core/src/com/gameware/game/states/State.java
+++ b/frontend/core/src/com/gameware/game/states/State.java
@@ -40,7 +40,7 @@ public abstract class State{
     }
 
 
-//    State methods
+//    Abstract state methods
     protected abstract void handleInput();
 
     public abstract void update(float dt);
diff --git a/frontend/core/src/com/gameware/game/states/TournamentHighScoreState.java b/frontend/core/src/com/gameware/game/states/TournamentHighScoreState.java
index 3f70f87f9bfb39ac5a64ecc3b6e13628afe8b17a..2ff5fc0f063feced6a7bf6132c8f550a0ca52285 100644
--- a/frontend/core/src/com/gameware/game/states/TournamentHighScoreState.java
+++ b/frontend/core/src/com/gameware/game/states/TournamentHighScoreState.java
@@ -2,7 +2,6 @@ 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.scenes.scene2d.InputEvent;
 import com.badlogic.gdx.scenes.scene2d.ui.Dialog;
 import com.badlogic.gdx.scenes.scene2d.ui.Label;
@@ -55,8 +54,8 @@ public class TournamentHighScoreState extends MenuStateTemplate{
             e.printStackTrace();
         }
 
-        totalDialog = makeDialog(totalDialogLabel);
-        lastRoundDialog = makeDialog(lastRoundLabel);
+        totalDialog = makeQuestionIconDialog(totalDialogLabel);
+        lastRoundDialog = makeQuestionIconDialog(lastRoundLabel);
 
         makeStage();
     }
@@ -95,8 +94,8 @@ public class TournamentHighScoreState extends MenuStateTemplate{
         innerTable.setBackground(backgroundTableBlueRounded);
 
         innerTable.add(colOneLabel).top();
-        innerTable.add(makeRow(colTwoLabel,totalDialog)).top();
-        innerTable.add(makeRow(colThreeLabel,lastRoundDialog)).top();
+        innerTable.add(makeTableWithLabelAndQuestionIcon(colTwoLabel,totalDialog)).top();
+        innerTable.add(makeTableWithLabelAndQuestionIcon(colThreeLabel,lastRoundDialog)).top();
         innerTable.row();
 
         for(Point point : points){
diff --git a/frontend/core/src/com/gameware/game/states/ViewHighScoreState.java b/frontend/core/src/com/gameware/game/states/ViewHighScoreState.java
index e4bbbea929cd478e315b8f010d2f4fb7d28997f9..0439b88fa5f6ca5be22b1e907e080a09b42f0d3c 100644
--- a/frontend/core/src/com/gameware/game/states/ViewHighScoreState.java
+++ b/frontend/core/src/com/gameware/game/states/ViewHighScoreState.java
@@ -2,7 +2,6 @@ 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.g2d.SpriteBatch;
 import com.badlogic.gdx.scenes.scene2d.InputEvent;
 
@@ -21,7 +20,7 @@ import com.gameware.game.sprites.LoadingText;
 
 import java.io.IOException;
 
-public class ViewHighScoreState extends State {
+public class ViewHighScoreState extends MenuStateTemplate {
 
 //    Data
     private List<Game> games = new ArrayList<>();
@@ -33,7 +32,7 @@ public class ViewHighScoreState extends State {
 
 //    Texts
     private final String backBtnText = "Back";
-    private final String BtnText = "View High Score!";
+    private final String BtnText = "View High Score";
 
 //    Values
     private final float scrollPaneWidth = Gdx.graphics.getWidth()/1.15f;
@@ -58,7 +57,7 @@ public class ViewHighScoreState extends State {
         makeStage();
     }
 
-    private void makeStage(){
+    protected void makeStage(){
         Table rootTable = super.makeRootTable();
 
         titleLabel.setFontScale(titleFontBigScale);
@@ -88,10 +87,10 @@ public class ViewHighScoreState extends State {
                 if(GameWare.getInstance().getGameIdToPlayState().get(g.getId()) == null){
                     continue;
                 }
-                innerTable.add(new Image(GameWare.getInstance().getGameIdToPlayState().get(g.getId()).screenshot)).width(imageWidthAndHeigh).height(imageWidthAndHeigh).pad(spacingLittle);
+                innerTable.add(new Image(GameWare.getInstance().getGameIdToPlayState().get(g.getId()).getScreenshot())).width(imageWidthAndHeigh).height(imageWidthAndHeigh).pad(spacingLittle);
 
                 Table innerInnerTable = new Table();
-                innerInnerTable.add(makeRow(new Label(g.getName(), skin), makeDialog(new Label(g.getExplanation().replaceAll("\\\\n", "\n"), skin)))).spaceBottom(spacingLittle);
+                innerInnerTable.add(makeTableWithLabelAndQuestionIcon(new Label(g.getName(), skin), makeQuestionIconDialog(new Label(g.getExplanation().replaceAll("\\\\n", "\n"), skin)))).spaceBottom(spacingLittle);
                 innerInnerTable.row();
 
                 TextButton gameBtn = new TextButton(BtnText, skin);
diff --git a/frontend/core/src/com/gameware/game/states/ViewTournamentState.java b/frontend/core/src/com/gameware/game/states/ViewTournamentState.java
index be43310ca9648f02c8928db61c1d4b03a125f15a..e77a8f2d854f49ef1913ebfa4b6c67e22f3fb54c 100644
--- a/frontend/core/src/com/gameware/game/states/ViewTournamentState.java
+++ b/frontend/core/src/com/gameware/game/states/ViewTournamentState.java
@@ -20,6 +20,7 @@ import com.gameware.game.models.Game;
 import com.gameware.game.models.Round;
 import com.gameware.game.models.Tournament;
 import com.gameware.game.sprites.LoadingText;
+import com.gameware.game.states.game_states.PlayStateTemplate;
 
 import java.io.IOException;
 import java.util.List;
@@ -109,7 +110,7 @@ public class ViewTournamentState extends MenuStateTemplate {
         currentRoundTable.setBackground(backgroundTableBlueRounded);
         currentRoundTable.add(new Label("This round:\n\n"+gameName,skin)).space(spacingLittle);
         PlayStateTemplate state = GameWare.getInstance().getGameIdToPlayState().get(round.getGameId());
-        currentRoundTable.add(new Image(state.screenshot)).width(imageWidthAndHeigh).height(imageWidthAndHeigh).spaceBottom(spacingMedium).colspan(2);
+        currentRoundTable.add(new Image(state.getScreenshot())).width(imageWidthAndHeigh).height(imageWidthAndHeigh).spaceBottom(spacingMedium).colspan(2);
         rootTable.add(currentRoundTable).maxHeight(Gdx.graphics.getHeight()/5).colspan(2);
         rootTable.row();
 
diff --git a/frontend/core/src/com/gameware/game/states/BubbleWrapState.java b/frontend/core/src/com/gameware/game/states/game_states/BubbleWrapState.java
similarity index 97%
rename from frontend/core/src/com/gameware/game/states/BubbleWrapState.java
rename to frontend/core/src/com/gameware/game/states/game_states/BubbleWrapState.java
index 5d449bf4a3c9293d4779a0761e583286744e40fa..0a1fffa4602a7dc193288e287d73ac03e39543d2 100644
--- a/frontend/core/src/com/gameware/game/states/BubbleWrapState.java
+++ b/frontend/core/src/com/gameware/game/states/game_states/BubbleWrapState.java
@@ -1,9 +1,10 @@
-package com.gameware.game.states;
+package com.gameware.game.states.game_states;
 
 import com.badlogic.gdx.Gdx;
 import com.badlogic.gdx.graphics.Texture;
 import com.badlogic.gdx.graphics.g2d.SpriteBatch;
 import com.gameware.game.sprites.Bubble;
+import com.gameware.game.states.GameStateManager;
 
 import java.util.ArrayList;
 
diff --git a/frontend/core/src/com/gameware/game/states/ColorRushState.java b/frontend/core/src/com/gameware/game/states/game_states/ColorRushState.java
similarity index 99%
rename from frontend/core/src/com/gameware/game/states/ColorRushState.java
rename to frontend/core/src/com/gameware/game/states/game_states/ColorRushState.java
index ee8adc4964755c5a507f4b6274d203164981872c..12d8bfe472a304c12839aa3ee6d21f65679e45cc 100644
--- a/frontend/core/src/com/gameware/game/states/ColorRushState.java
+++ b/frontend/core/src/com/gameware/game/states/game_states/ColorRushState.java
@@ -1,9 +1,10 @@
-package com.gameware.game.states;
+package com.gameware.game.states.game_states;
 import com.badlogic.gdx.Gdx;
 import com.badlogic.gdx.graphics.Texture;
 import com.badlogic.gdx.graphics.g2d.SpriteBatch;
 import com.gameware.game.sprites.ColorRushButton;
 import com.gameware.game.sprites.ColorRushTarget;
+import com.gameware.game.states.GameStateManager;
 
 import java.util.ArrayList;
 import java.util.Collections;
diff --git a/frontend/core/src/com/gameware/game/states/FruitSlicerState.java b/frontend/core/src/com/gameware/game/states/game_states/FruitSlicerState.java
similarity index 98%
rename from frontend/core/src/com/gameware/game/states/FruitSlicerState.java
rename to frontend/core/src/com/gameware/game/states/game_states/FruitSlicerState.java
index 25e3e86833fb3487b94e9640043bdd66c040f372..6c805a938547daa4b0f7f5c54d2c5c18dd8170e1 100644
--- a/frontend/core/src/com/gameware/game/states/FruitSlicerState.java
+++ b/frontend/core/src/com/gameware/game/states/game_states/FruitSlicerState.java
@@ -1,4 +1,4 @@
-package com.gameware.game.states;
+package com.gameware.game.states.game_states;
 
 import com.badlogic.gdx.Gdx;
 import com.badlogic.gdx.audio.Sound;
@@ -8,6 +8,7 @@ import com.badlogic.gdx.math.Vector3;
 import com.gameware.game.GameWare;
 import com.gameware.game.sprites.Fruit;
 import com.gameware.game.sprites.SlicingCircle;
+import com.gameware.game.states.GameStateManager;
 
 import java.util.ArrayList;
 import java.util.List;
diff --git a/frontend/core/src/com/gameware/game/states/PlayStateTemplate.java b/frontend/core/src/com/gameware/game/states/game_states/PlayStateTemplate.java
similarity index 94%
rename from frontend/core/src/com/gameware/game/states/PlayStateTemplate.java
rename to frontend/core/src/com/gameware/game/states/game_states/PlayStateTemplate.java
index f616042025d77a8b399697f67ef8a0a9c78a0006..640867001e3abb4488693230f560b61242ad9983 100644
--- a/frontend/core/src/com/gameware/game/states/PlayStateTemplate.java
+++ b/frontend/core/src/com/gameware/game/states/game_states/PlayStateTemplate.java
@@ -1,4 +1,4 @@
-package com.gameware.game.states;
+package com.gameware.game.states.game_states;
 
 
 import com.badlogic.gdx.Gdx;
@@ -14,6 +14,13 @@ import com.gameware.game.models.RoundCheck;
 import com.gameware.game.models.Tournament;
 import com.gameware.game.sprites.LoadingText;
 import com.gameware.game.sprites.PauseButton;
+import com.gameware.game.states.FinishedTournamentState;
+import com.gameware.game.states.GameStateManager;
+import com.gameware.game.states.PauseState;
+import com.gameware.game.states.ScoreState;
+import com.gameware.game.states.SinglePlayerSelectGameState;
+import com.gameware.game.states.State;
+import com.gameware.game.states.ViewTournamentState;
 
 import java.io.IOException;
 import java.util.List;
@@ -139,7 +146,7 @@ public abstract class PlayStateTemplate extends State {
 //    When game is done, this method is called and posts the score, ands new instance of the game,
 //    uptades rounds and tournaments if in a tournament and sends back to the correct state.
 //    Remember to use setScore before using this method.
-    protected void gameDone(){
+    public void gameDone(){
         String id = "";
         //Find the id to the game just played
         for (String key : GameWare.getInstance().getGameIdToPlayState().keySet()){
@@ -255,6 +262,10 @@ public abstract class PlayStateTemplate extends State {
         return this.totalGameTime;
     }
 
+    public Texture getScreenshot(){
+        return screenshot;
+    }
+
 //    Hide and show methods:
     public void hidePauseButton(){
         this.pauseButtonVisible = false;