diff --git a/frontend/core/src/com/gameware/game/GameWare.java b/frontend/core/src/com/gameware/game/GameWare.java
index 8cfd2d3db1394aaa74c96b6d0b1f6058675a6d06..64a12141ef97b93b7b1fd4cd058f1e5c22b42c63 100644
--- a/frontend/core/src/com/gameware/game/GameWare.java
+++ b/frontend/core/src/com/gameware/game/GameWare.java
@@ -31,7 +31,7 @@ public class GameWare extends ApplicationAdapter {
 
 	@Override
 	public void create () {
-		gsm = new GameStateManager();
+		gsm = GameStateManager.getInstance();
 		batch = new SpriteBatch();
 
 		music = Gdx.audio.newMusic(Gdx.files.internal(("bensound-goinghigher.mp3")));
diff --git a/frontend/core/src/com/gameware/game/models/Game.java b/frontend/core/src/com/gameware/game/models/Game.java
new file mode 100644
index 0000000000000000000000000000000000000000..6eb703b99d80c913ddb3d8f2bc352f1fe5527e06
--- /dev/null
+++ b/frontend/core/src/com/gameware/game/models/Game.java
@@ -0,0 +1,33 @@
+package com.gameware.game.models;
+
+import com.badlogic.gdx.utils.Json;
+
+public class Game {
+    private String _id;
+    private String name;
+
+    public Game(String _id, String name) {
+        this._id = _id;
+        this.name = name;
+    }
+
+    public Game() {
+    }
+
+    public String getId() {
+        return _id;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void reset() {
+        this._id = null;
+        this.name = null;
+    }
+
+    public String report() {
+        return new Json().toJson(this);
+    }
+}
diff --git a/frontend/core/src/com/gameware/game/models/Highscore.java b/frontend/core/src/com/gameware/game/models/Highscore.java
new file mode 100644
index 0000000000000000000000000000000000000000..e62193893bda9f800fcbf55cbf9ac17e070c5ff4
--- /dev/null
+++ b/frontend/core/src/com/gameware/game/models/Highscore.java
@@ -0,0 +1,48 @@
+package com.gameware.game.models;
+
+import com.badlogic.gdx.utils.Json;
+
+public class Highscore {
+    private String _id;
+    private String gameid;
+    private String userid;
+    private double value;
+
+    public Highscore() {
+    }
+
+    public Highscore(String _id, String gameId, String userId, double value) {
+        this._id = _id;
+        this.gameid = gameId;
+        this.userid = userId;
+        this.value = value;
+    }
+
+    public String get_id() {
+        return _id;
+    }
+
+    public String getGameId() {
+        return gameid;
+    }
+
+    public String getUserId() {
+        return userid;
+    }
+
+    public double getValue() {
+        return value;
+    }
+
+    public void reset() {
+        _id = null;
+        gameid = null;
+        userid = null;
+        value = Double.parseDouble(null);
+    }
+
+    public String report() {
+        return new Json().toJson(this);
+    }
+
+}
diff --git a/frontend/core/src/com/gameware/game/models/Player.java b/frontend/core/src/com/gameware/game/models/Player.java
new file mode 100644
index 0000000000000000000000000000000000000000..ed8efab6a228608663c4fe154578fbe97f787870
--- /dev/null
+++ b/frontend/core/src/com/gameware/game/models/Player.java
@@ -0,0 +1,34 @@
+package com.gameware.game.models;
+
+import com.badlogic.gdx.utils.Json;
+
+import java.util.jar.JarEntry;
+
+public class Player {
+    private String _id;
+    private String name;
+
+    public Player(String _id, String name) {
+        this._id = _id;
+        this.name = name;
+    }
+
+    public Player() {}
+
+    public String getId() {
+        return _id;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void reset() {
+        this._id = null;
+        this.name = null;
+    }
+
+    public String report() {
+        return new Json().toJson(this);
+    }
+}
diff --git a/frontend/core/src/com/gameware/game/models/Round.java b/frontend/core/src/com/gameware/game/models/Round.java
new file mode 100644
index 0000000000000000000000000000000000000000..1c48b8ee4b68b26d5279e37c656fe6e1f9cda3a0
--- /dev/null
+++ b/frontend/core/src/com/gameware/game/models/Round.java
@@ -0,0 +1,52 @@
+package com.gameware.game.models;
+
+import com.badlogic.gdx.utils.Json;
+
+public class Round {
+    private String _id;
+    private String tournamentId;
+    private String playerId;
+    private String gameId;
+    private int roundNr;
+    private String deadlineDate;
+    private double scoreValue;
+    private boolean hasPlayed;
+    private int tournamentPoints;
+
+    public Round() {
+    }
+
+    public String get_id() { return _id; }
+
+    public String getTournamentId() { return tournamentId;}
+
+    public String getPlayerId() { return playerId; }
+
+    public String getGameId() { return gameId; }
+
+    public int getRoundNr() { return roundNr; }
+
+    public String getDeadlineDate() { return deadlineDate; }
+
+    public double getScoreValue() { return scoreValue; }
+
+    public boolean isPlayed() { return hasPlayed; }
+
+    public int getTournamentPoints() { return tournamentPoints; }
+
+    public void reset() {
+        _id = null;
+        tournamentId = null;
+        playerId = null;
+        gameId = null;
+        roundNr = Integer.parseInt(null);
+        deadlineDate = null;
+        scoreValue = Double.parseDouble(null);
+        hasPlayed = Boolean.parseBoolean(null);
+        tournamentPoints = Integer.parseInt(null);
+    }
+
+    public String report() {
+        return new Json().toJson(this);
+    }
+}
diff --git a/frontend/core/src/com/gameware/game/models/Tournament.java b/frontend/core/src/com/gameware/game/models/Tournament.java
new file mode 100644
index 0000000000000000000000000000000000000000..d179c523ee1f54e12969ceb886b476629ab1e584
--- /dev/null
+++ b/frontend/core/src/com/gameware/game/models/Tournament.java
@@ -0,0 +1,87 @@
+package com.gameware.game.models;
+
+import com.badlogic.gdx.utils.Json;
+
+import java.text.DateFormat;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
+import java.util.TimeZone;
+
+public class Tournament {
+    private String _id;
+    private List<String> players;
+    private List<String> games;
+    private String name;
+    private double timePerRound;
+    private int maxPlayers;
+    private int roundsPerGame;
+    private int currentRound;
+    private String dateCreated;
+    private boolean active;
+
+    public Tournament() {
+    }
+
+    public String get_id() {
+        return _id;
+    }
+
+    public List<String> getPlayers() {
+        return players;
+    }
+
+    public List<String> getGames() {
+        return games;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public double getTimePerRound() {
+        return timePerRound;
+    }
+
+    public int getMaxPlayers() {
+        return maxPlayers;
+    }
+
+    public int getRoundsPerGame() {
+        return roundsPerGame;
+    }
+
+    public int getCurrentRound() {
+        return currentRound;
+    }
+
+    public String getDateCreated() {
+       return dateCreated;
+    }
+
+    public boolean isActive() {
+        return active;
+    }
+
+    public void reset() {
+        _id = null;
+        players = null;
+        games = null;
+        name = null;
+        timePerRound = Double.parseDouble(null);
+        maxPlayers = Integer.parseInt(null);
+        roundsPerGame = Integer.parseInt(null);
+        currentRound = Integer.parseInt(null);
+        dateCreated = null;
+        active = Boolean.parseBoolean(null);
+    }
+
+    public String report() {
+        return new Json().toJson(this);
+    }
+}
+
+
+
+
diff --git a/frontend/core/src/com/gameware/game/states/CreateJoinTournamentState.java b/frontend/core/src/com/gameware/game/states/CreateJoinTournamentState.java
index 955d526bc98090c1e6648a5b0ad723f911dc57af..7bd28c467033adf5096902e11b153fe706b1fbb8 100644
--- a/frontend/core/src/com/gameware/game/states/CreateJoinTournamentState.java
+++ b/frontend/core/src/com/gameware/game/states/CreateJoinTournamentState.java
@@ -2,42 +2,30 @@ package com.gameware.game.states;
 
 import com.badlogic.gdx.Gdx;
 import com.badlogic.gdx.graphics.g2d.SpriteBatch;
-import com.badlogic.gdx.math.Vector3;
 import com.badlogic.gdx.scenes.scene2d.InputEvent;
-import com.badlogic.gdx.scenes.scene2d.Stage;
-import com.badlogic.gdx.scenes.scene2d.ui.Button;
 import com.badlogic.gdx.scenes.scene2d.ui.Label;
 import com.badlogic.gdx.scenes.scene2d.ui.ScrollPane;
 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.ui.TextField;
 import com.badlogic.gdx.scenes.scene2d.utils.ClickListener;
-import com.gameware.game.GameWare;
 
 public class CreateJoinTournamentState extends State {
 
-    private Stage stage;
     private Table outerTable;
     private Table innerTable;
+    private final float labelSize = 10f;
 
-    private int spacingOnBottom = Gdx.graphics.getHeight()/15;
-    private float fontScaleX = 3f;
-    private float fontScaleY = 3f;
     private String backBtnText = "Back";
     private String enterBtnText = "Enter";
     private String createBtnText = "Create new";
     private String joinBtnText = "Join new";
     private String tournamentText = "Tournament 1";
 
+
     public CreateJoinTournamentState(GameStateManager gsm) {
         super(gsm);
         System.out.println("Du er i create join tournament state :0");
-        stage = new Stage();
-        Gdx.input.setInputProcessor(stage);
-        Skin skin = new Skin(Gdx.files.internal(GameWare.skinFilePath));
-        skin.getFont("font").getData().setScale(fontScaleX,fontScaleY);
-        cam.setToOrtho(false, Gdx.graphics.getWidth()/2, Gdx.graphics.getHeight()/2);
 
         outerTable = new Table();
         outerTable.setFillParent(true);
@@ -48,7 +36,7 @@ public class CreateJoinTournamentState extends State {
         innerTable.row();
 
         Label tournamentLabel = new Label(tournamentText,skin);
-
+        //TODO: autogenerere utifra query og putt dem i en liste
         TextButton enterBtn = new TextButton(enterBtnText, skin);
         enterBtn.addListener(new ClickListener() {
             @Override
@@ -65,18 +53,51 @@ public class CreateJoinTournamentState extends State {
             }
         });
 
+        TextButton enterBtn3 = new TextButton(enterBtnText, skin);
+        enterBtn3.addListener(new ClickListener() {
+            @Override
+            public void clicked(InputEvent e, float x, float y){
+                handleEnterBtnClick();
+            }
+        });
+
+        TextButton enterBtn4 = new TextButton(enterBtnText, skin);
+        enterBtn4.addListener(new ClickListener() {
+            @Override
+            public void clicked(InputEvent e, float x, float y){
+                handleEnterBtnClick();
+            }
+        });
+
         innerTable.add(tournamentLabel).size(Gdx.graphics.getWidth()/5);
         innerTable.add(enterBtn);
         innerTable.row();
         innerTable.add(enterBtn2);
         innerTable.row();
-
+        innerTable.add(enterBtn3);
+        innerTable.row();
+        innerTable.add(enterBtn4);
+        innerTable.row();
 
         ScrollPane tournamentsPane = new ScrollPane(innerTable, skin);
-        outerTable.add(tournamentsPane).height(Gdx.graphics.getHeight()/4).width(Gdx.graphics.getWidth());
+        outerTable.add(tournamentsPane).spaceBottom(spacingOnBottom);
 
         outerTable.row();
+        outerTable.add(makeCreateBtn()).spaceBottom(spacingOnBottom);
+        outerTable.add(makeJoinBtn()).spaceBottom(spacingOnBottom);
+        outerTable.row();
+
+        outerTable.add(makeBackBtn()).spaceBottom(spacingOnBottom);
 
+        //outerTable.row();
+
+        Label tournamentLabel1 = new Label(tournamentText,skin);
+        outerTable.add(tournamentLabel1).size(labelSize);
+
+        stage.addActor(outerTable);
+    }
+
+    private TextButton makeCreateBtn(){
         TextButton createBtn = new TextButton(createBtnText, skin);
         createBtn.addListener(new ClickListener() {
             @Override
@@ -84,8 +105,10 @@ public class CreateJoinTournamentState extends State {
                 handleCreateBtnClick();
             }
         });
-        outerTable.add(createBtn).pad(10);
+        return createBtn;
+    }
 
+    private TextButton makeJoinBtn(){
         TextButton joinBtn = new TextButton(joinBtnText, skin);
         joinBtn.addListener(new ClickListener() {
             @Override
@@ -93,10 +116,10 @@ public class CreateJoinTournamentState extends State {
                 handleJoinBtnClick();
             }
         });
-        outerTable.add(joinBtn).pad(10);
-
-        outerTable.row();
+        return joinBtn;
+    }
 
+    private TextButton makeBackBtn(){
         TextButton backBtn = new TextButton(backBtnText, skin);
         backBtn.addListener(new ClickListener() {
             @Override
@@ -104,9 +127,7 @@ public class CreateJoinTournamentState extends State {
                 handleBackBtnClick();
             }
         });
-        outerTable.add(backBtn).pad(10);
-
-        stage.addActor(outerTable);
+        return backBtn;
     }
 
     @Override
diff --git a/frontend/core/src/com/gameware/game/states/GameStateManager.java b/frontend/core/src/com/gameware/game/states/GameStateManager.java
index e74b0aef2b0f35037530838d30d430021076bec0..b919a24b8dd64160e667717e1bcdbb3585a69d6b 100644
--- a/frontend/core/src/com/gameware/game/states/GameStateManager.java
+++ b/frontend/core/src/com/gameware/game/states/GameStateManager.java
@@ -7,7 +7,17 @@ import java.util.Stack;
 public class GameStateManager {
     private Stack<State> states;
 
-    public GameStateManager(){
+    private static GameStateManager instance = null;
+
+    //Singleton (lazy initialization)
+    public static GameStateManager getInstance(){
+        if( instance == null){
+            instance = new GameStateManager();
+        }
+        return instance;
+    }
+
+    private GameStateManager(){
         states = new Stack<State>();
     }
 
diff --git a/frontend/core/src/com/gameware/game/states/LoginState.java b/frontend/core/src/com/gameware/game/states/LoginState.java
index 77733edef4fd104868505752a902f0c0e2361203..7d2ca7b625320af08deff54c33acb949c5a6ac59 100644
--- a/frontend/core/src/com/gameware/game/states/LoginState.java
+++ b/frontend/core/src/com/gameware/game/states/LoginState.java
@@ -3,17 +3,14 @@ package com.gameware.game.states;
 import com.badlogic.gdx.Gdx;
 import com.badlogic.gdx.graphics.g2d.SpriteBatch;
 import com.badlogic.gdx.scenes.scene2d.InputEvent;
-import com.badlogic.gdx.scenes.scene2d.Stage;
 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.ui.TextField;
 import com.badlogic.gdx.scenes.scene2d.utils.ClickListener;
-import com.gameware.game.GameWare;
 
 public class LoginState extends State {
 
-    private Stage stage;
     private Table table;
     private String usernameInputText = "Username";
     private TextField usernameInputField;
@@ -23,9 +20,6 @@ public class LoginState extends State {
 
     private int inputFieldWidth = Gdx.graphics.getWidth()/2;
     private int inputFieldHeight = Gdx.graphics.getHeight()/15;
-    private int spacingOnBottom = Gdx.graphics.getHeight()/15;
-    private float fontScaleX = 3f;
-    private float fontScaleY = 3f;
     private String loginBtnText = "Log in";
     private String signUpBtnText = "Sign Up";
 
@@ -33,28 +27,20 @@ public class LoginState extends State {
     public LoginState(GameStateManager gsm) {
         super(gsm);
 
-        stage = new Stage();
-        Gdx.input.setInputProcessor(stage);
-        Skin skin = new Skin(Gdx.files.internal(GameWare.skinFilePath));
-        skin.getFont("font").getData().setScale(fontScaleX,fontScaleY);
-
-        cam.setToOrtho(false, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
-
-        //Make Table
         table = new Table();
         table.setFillParent(true);
-        table.add(makeUserInputField(skin)).size(inputFieldWidth, inputFieldHeight).spaceBottom(spacingOnBottom);
+        table.add(makeUserInputField()).size(inputFieldWidth, inputFieldHeight).spaceBottom(spacingOnBottom);
         table.row();
-        table.add(makePasswordInputField(skin)).size(inputFieldWidth, inputFieldHeight).spaceBottom(spacingOnBottom);
+        table.add(makePasswordInputField()).size(inputFieldWidth, inputFieldHeight).spaceBottom(spacingOnBottom);
         table.row();
-        table.add(makeLoginBtn(skin));
+        table.add(makeLoginBtn()).spaceBottom(spacingOnBottom);
         table.row();
-        table.add(makeSignUpBtn(skin));
+        table.add(makeSignUpBtn());
 
         stage.addActor(table);
     }
 
-    private TextField makeUserInputField(Skin skin){
+    private TextField makeUserInputField( ){
         usernameInputField = new TextField(usernameInputText, skin);
         usernameInputField.addListener(new ClickListener() {
             @Override
@@ -66,7 +52,7 @@ public class LoginState extends State {
         return usernameInputField;
     }
 
-    private TextField makePasswordInputField(Skin skin){
+    private TextField makePasswordInputField( ){
         passwordInputField = new TextField(passwordInputText, skin);
         passwordInputField.setPasswordCharacter(passwordCharacter);
         passwordInputField.addListener(new ClickListener() {
@@ -80,7 +66,7 @@ public class LoginState extends State {
         return passwordInputField;
     }
 
-    private TextButton makeLoginBtn(Skin skin){
+    private TextButton makeLoginBtn( ){
         TextButton loginBtn = new TextButton(loginBtnText, skin);
         loginBtn.addListener(new ClickListener() {
             @Override
@@ -91,7 +77,7 @@ public class LoginState extends State {
         return loginBtn;
     }
 
-    private TextButton makeSignUpBtn(Skin skin){
+    private TextButton makeSignUpBtn( ){
         TextButton signUpBtn = new TextButton(signUpBtnText, skin);
         signUpBtn.addListener(new ClickListener() {
             @Override
@@ -135,61 +121,29 @@ public class LoginState extends State {
     private void handleLoginBtnClick(){
         String username = usernameInputField.getText();
         String password = passwordInputField.getText();
-        if(isValidLogin(username, password)){
-            gsm.set(new MenuState(gsm));
-            //User user = QueryIntermediate.getUser(username);
-            //GameWare.setUser(user);
-        }
-        else{
-            //TODO: give user error popup (or something) about why not valid
-        }
-    }
-
-    //TODO: Check if username is in DB and matches with correct password given
-    private boolean isValidLogin(String username, String password){
+//        User user;
         try {
             //TODO:
-//            User u = QueryIntermediate.getUser(username)
-//            if(u.getPassword() == password){
-//                return true;
-//            }
-//            return false;
+//            User user = QueryIntermediate.getUser(username, password);
+//            gsm.set(new MenuState(gsm));
+//            GameWare.setUser(user);
         }catch(Exception e){
-            //TODO: Endre fra exception til spesifisert Element Not Found Exception eller hva det heter
-            //melding ut om at brukeren ikke eksisterer
-            //return false;
-        } finally{
-            //TODO: Endre return under til fasle når lagt inn faktisk henting til DB og melding om at noe gikk galt
-            return true;
+//            TODO: Endre fra exception til spesifisert Element Not Found Exception eller hva det heter
+//            melding ut om at brukeren ikke eksisterer
         }
     }
 
     private void handleSignUpBtnClick(){
         String username = usernameInputField.getText();
         String password = passwordInputField.getText();
-        if(isValidSignUp(username)){
-            gsm.set(new MenuState(gsm));
-            //TODO:
-            //User user = QueryIntermediate.getUser(username);
-            //GameWare.setUser(user);
-        }
-        else{
-            //TODO: give user error popup (or something) about why not valid
-        }
-    }
-
-    //TODO: Check if username is already taken in DB
-    private boolean isValidSignUp(String username){
+//        User user;
         try {
-            //TODO:
-            //QueryIntermediate.getUser(username)
-            //return false;
+//            TODO:
+//            QueryIntermediate.createPlayer(username, password)
+//            gsm.set(new MenuState(gsm));
+//            GameWare.setUser(user);
         }catch(Exception e){
-            //TODO: Endre fra exception til spesifisert Element Not Found Exception eller hva det heter
-            //return true;
-        } finally{
-            //TODO: Endre return under til fasle når lagt inn faktisk henting til DB og melding om at noe gikk galt
-            return true;
+//            TODO: Endre fra exception til spesifisert Element Not Found Exception eller hva det heter
         }
     }
 }
diff --git a/frontend/core/src/com/gameware/game/states/MenuState.java b/frontend/core/src/com/gameware/game/states/MenuState.java
index 2b384a74f2b38bf035b19718454c6fda347077d9..52dfe00a8319ca2c3fafdc84447201e100c2c050 100644
--- a/frontend/core/src/com/gameware/game/states/MenuState.java
+++ b/frontend/core/src/com/gameware/game/states/MenuState.java
@@ -1,76 +1,84 @@
 package com.gameware.game.states;
 
-import com.badlogic.gdx.Gdx;
 import com.badlogic.gdx.graphics.g2d.SpriteBatch;
 import com.badlogic.gdx.scenes.scene2d.InputEvent;
-import com.badlogic.gdx.scenes.scene2d.Stage;
-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.gameware.game.GameWare;
 
 public class MenuState extends State{
-    private Stage stage;
+
     private Table table;
 
-    private int spacingOnBottom = Gdx.graphics.getHeight()/15;
-    private float fontScaleX = 3f;
-    private float fontScaleY = 3f;
     private String singlePlayerBtnText = "Single player";
     private String multiPlayerBtnText = "Multi player";
     private String highScoreBtnText = "High Scores";
     private String optionBtnText = "Options";
     private String logOutBtnText = "Log out";
 
-
     public MenuState(GameStateManager gsm) {
         super(gsm);
-        System.out.println("Du er i menu state :0");
-
-        stage = new Stage();
-        Gdx.input.setInputProcessor(stage);
-        Skin skin = new Skin(Gdx.files.internal(GameWare.skinFilePath));
-        skin.getFont("font").getData().setScale(fontScaleX,fontScaleY);
-        cam.setToOrtho(false, Gdx.graphics.getWidth()/2, Gdx.graphics.getHeight()/2);
 
         table = new Table();
         table.setFillParent(true);
 
         table.row();
+        table.add(makeSinglePlayerBtn()).spaceBottom(spacingOnBottom);
+        table.row();
+        table.add(makeMultiPlayerBtn()).spaceBottom(spacingOnBottom);
+        table.row();
+        table.add(makeOptionsBtn()).spaceBottom(spacingOnBottom);
+        table.row();
+        table.add(makeHighScoreBtn()).spaceBottom(spacingOnBottom);
+        table.row();
+        table.add(makeLogOutBtn()).spaceBottom(spacingOnBottom);
+
+        stage.addActor(table);
+    }
+
+    private TextButton makeSinglePlayerBtn(){
         TextButton singlePlayerBtn = new TextButton(singlePlayerBtnText, skin);
         singlePlayerBtn.addListener(new ClickListener() {
             @Override
             public void clicked(InputEvent e, float x, float y){ handleSingleBtnClick(); }
         });
-        table.add(singlePlayerBtn);
+        return singlePlayerBtn;
+    }
 
-        table.row();
+    private TextButton makeMultiPlayerBtn(){
         TextButton multiPlayerBtn = new TextButton(multiPlayerBtnText, skin);
         multiPlayerBtn.addListener(new ClickListener() {
             @Override
             public void clicked(InputEvent e, float x, float y){ handleMultiBtnClick(); }
         });
-        table.add(multiPlayerBtn);
+        return multiPlayerBtn;
+    }
 
-        table.row();
+    private TextButton makeOptionsBtn(){
         TextButton optionsBtn = new TextButton(optionBtnText, skin);
         optionsBtn.addListener(new ClickListener() {
             @Override
             public void clicked(InputEvent e, float x, float y){ handleOptionsBtnClick(); }
         });
-        table.add(optionsBtn);
+        return optionsBtn;
+    }
 
-        table.row();
+    private TextButton makeHighScoreBtn(){
         TextButton highScoreBtn = new TextButton(highScoreBtnText, skin);
         highScoreBtn.addListener(new ClickListener() {
             @Override
             public void clicked(InputEvent e, float x, float y){ handleHighscoreBtnClick(); }
         });
-        table.add(highScoreBtn);
-
-        stage.addActor(table);
+        return highScoreBtn;
+    }
 
+    private TextButton makeLogOutBtn(){
+        TextButton logOutBtn = new TextButton(logOutBtnText, skin);
+        logOutBtn.addListener(new ClickListener() {
+            @Override
+            public void clicked(InputEvent e, float x, float y){ handleLogOutBtnClick(); }
+        });
+        return logOutBtn;
     }
 
     @Override
@@ -120,7 +128,8 @@ public class MenuState extends State{
     }
 
     private void handleLogOutBtnClick(){
-
+        gsm.set(new LoginState(gsm));
+        //TODO: antar at når ikke logget inn at user i GameWare skal bli satt til null
+        //Gameware.setUser(null);
     }
-
 }
diff --git a/frontend/core/src/com/gameware/game/states/PlayStateTemplate.java b/frontend/core/src/com/gameware/game/states/PlayStateTemplate.java
index 65a779aef74db56587d4c439129ec75843335bb2..74a840b88a4d71902264279e2bf0e7b4ad281c98 100644
--- a/frontend/core/src/com/gameware/game/states/PlayStateTemplate.java
+++ b/frontend/core/src/com/gameware/game/states/PlayStateTemplate.java
@@ -1,16 +1,9 @@
 package com.gameware.game.states;
 
-import com.gameware.game.states.GameStateManager;
-import com.gameware.game.states.State;
 
 public abstract class PlayStateTemplate extends State {
     private int score;
     private boolean isFinished;
-//    private QueryIntermediate qi;
-
-//    public PlayStateTemplate(QueryIntermediate qi){
-//        this.qi = qi;
-//    }
 
     public PlayStateTemplate(GameStateManager gsm){
         super(gsm);
@@ -30,7 +23,7 @@ public abstract class PlayStateTemplate extends State {
     }
 
 //    public void postScore(){
-//        this.qi.addHighscore(this.score);
+//        QueryIntermediate.addHighscore(this.score);
 //    }
 }
 
diff --git a/frontend/core/src/com/gameware/game/states/State.java b/frontend/core/src/com/gameware/game/states/State.java
index 89a0758561774e500a5dd9ca7af404b10e998944..583fdae9e9e32efee39a3d19a4e797654ca8978d 100644
--- a/frontend/core/src/com/gameware/game/states/State.java
+++ b/frontend/core/src/com/gameware/game/states/State.java
@@ -1,15 +1,31 @@
 package com.gameware.game.states;
 
+import com.badlogic.gdx.Gdx;
 import com.badlogic.gdx.graphics.OrthographicCamera;
 import com.badlogic.gdx.graphics.g2d.SpriteBatch;
+import com.badlogic.gdx.scenes.scene2d.Stage;
+import com.badlogic.gdx.scenes.scene2d.ui.Skin;
+import com.gameware.game.GameWare;
 
 public abstract class State {
     protected OrthographicCamera cam;
     protected GameStateManager gsm;
+    protected Stage stage;
+    protected Skin skin;
+    protected static final float fontScaleX = 3f;
+    protected static final float fontScaleY = 3f;
+    protected static final float spacingOnBottom = Gdx.graphics.getHeight()/50;
+    protected static final float spacingOnBottomInputFIeld = Gdx.graphics.getHeight()/15;
 
     protected State(GameStateManager gsm){
         this.gsm = gsm;
         cam = new OrthographicCamera();
+        cam.setToOrtho(false, Gdx.graphics.getWidth()/2, Gdx.graphics.getHeight()/2);
+
+        stage = new Stage();
+        Gdx.input.setInputProcessor(stage);
+        skin = new Skin(Gdx.files.internal(GameWare.skinFilePath));
+        skin.getFont("font").getData().setScale(fontScaleX, fontScaleY);
     }
 
     protected abstract void handleInput();
diff --git a/frontend/core/src/com/gameware/game/states/ViewHighScoreState.java b/frontend/core/src/com/gameware/game/states/ViewHighScoreState.java
index 33eb762e5e1c336ff9ca936ff3cec22cce88f467..7d17cf6c4075d3937c71eac9ff32947e28154baa 100644
--- a/frontend/core/src/com/gameware/game/states/ViewHighScoreState.java
+++ b/frontend/core/src/com/gameware/game/states/ViewHighScoreState.java
@@ -1,25 +1,16 @@
 package com.gameware.game.states;
 
-import com.badlogic.gdx.Gdx;
 import com.badlogic.gdx.graphics.g2d.SpriteBatch;
-import com.badlogic.gdx.math.Vector3;
 import com.badlogic.gdx.scenes.scene2d.InputEvent;
-import com.badlogic.gdx.scenes.scene2d.Stage;
-import com.badlogic.gdx.scenes.scene2d.ui.Button;
 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.gameware.game.GameWare;
 
 public class ViewHighScoreState extends State {
 
-    private Stage stage;
     private Table table;
 
-    private int spacingOnBottom = Gdx.graphics.getHeight()/15;
-    private float fontScaleX = 3f;
-    private float fontScaleY = 3f;
     private String backBtnText = "Back";
     private String colorRushHighScoreBtnText = "Color Rush";
     private String bubbleWrapHighScoreBtnText = "Bubble Wrap";
@@ -28,23 +19,14 @@ public class ViewHighScoreState extends State {
     public ViewHighScoreState(GameStateManager gsm) {
         super(gsm);
         System.out.println("Du er i view high score state :0");
-        stage = new Stage();
-        Gdx.input.setInputProcessor(stage);
-        Skin skin = new Skin(Gdx.files.internal(GameWare.skinFilePath));
-        skin.getFont("font").getData().setScale(fontScaleX,fontScaleY);
-        cam.setToOrtho(false, Gdx.graphics.getWidth()/2, Gdx.graphics.getHeight()/2);
 
         table = new Table();
         table.setFillParent(true);
 
         table.row();
-        TextButton backBtn = new TextButton(backBtnText, skin);
-        backBtn.addListener(new ClickListener() {
-            @Override
-            public void clicked(InputEvent e, float x, float y){ handleBackBtnClick(); }
-        });
-        table.add(backBtn);
+        table.add(makeBackBtn());
 
+        //TODO: autogenerer fra QI get
         table.row();
         TextButton colorRushBtn = new TextButton(colorRushHighScoreBtnText, skin);
         colorRushBtn.addListener(new ClickListener() {
@@ -64,6 +46,15 @@ public class ViewHighScoreState extends State {
         stage.addActor(table);
     }
 
+    private TextButton makeBackBtn(){
+        TextButton backBtn = new TextButton(backBtnText, skin);
+        backBtn.addListener(new ClickListener() {
+            @Override
+            public void clicked(InputEvent e, float x, float y){ handleBackBtnClick(); }
+        });
+        return backBtn;
+    }
+
     @Override
     protected void handleInput() {
 
diff --git a/frontend/core/src/com/gameware/game/states/ViewTournamentState.java b/frontend/core/src/com/gameware/game/states/ViewTournamentState.java
index 13f92a63a34c5408844ee1949c78551e162a932a..5a8a3689f38a97f6ce7c1527824503e4e945a2c1 100644
--- a/frontend/core/src/com/gameware/game/states/ViewTournamentState.java
+++ b/frontend/core/src/com/gameware/game/states/ViewTournamentState.java
@@ -1,42 +1,31 @@
 package com.gameware.game.states;
 
-import com.badlogic.gdx.Gdx;
 import com.badlogic.gdx.graphics.g2d.SpriteBatch;
-import com.badlogic.gdx.math.Vector2;
-import com.badlogic.gdx.math.Vector3;
 import com.badlogic.gdx.scenes.scene2d.InputEvent;
-import com.badlogic.gdx.scenes.scene2d.Stage;
-import com.badlogic.gdx.scenes.scene2d.ui.Button;
-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.gameware.game.GameWare;
 
 public class ViewTournamentState extends State {
 
-    private Stage stage;
     private Table table;
 
-    private int spacingOnBottom = Gdx.graphics.getHeight()/15;
-    private float fontScaleX = 3f;
-    private float fontScaleY = 3f;
     private String backBtnText = "Back";
 
     public ViewTournamentState(GameStateManager gsm) {
         super(gsm);
         System.out.println("Du er i view tournament state :0");
-        stage = new Stage();
-        Gdx.input.setInputProcessor(stage);
-        Skin skin = new Skin(Gdx.files.internal(GameWare.skinFilePath));
-        skin.getFont("font").getData().setScale(fontScaleX,fontScaleY);
-        cam.setToOrtho(false, Gdx.graphics.getWidth()/2, Gdx.graphics.getHeight()/2);
 
         table = new Table();
         table.setFillParent(true);
 
         table.row();
+        table.add(makeBackBtn());
 
+        stage.addActor(table);
+    }
+
+    private TextButton makeBackBtn(){
         TextButton backBtn = new TextButton(backBtnText, skin);
         backBtn.addListener(new ClickListener() {
             @Override
@@ -44,9 +33,7 @@ public class ViewTournamentState extends State {
                 handleBackBtnClick();
             }
         });
-        table.add(backBtn);
-
-        stage.addActor(table);
+        return backBtn;
     }
 
     @Override