diff --git a/frontend/core/src/com/gameware/game/GameWare.java b/frontend/core/src/com/gameware/game/GameWare.java
index 26b7cd1fab320c6e355d86821227340d279bb7ec..bef2ef236016ceb9f09ca0f060ff7069d510b6c6 100644
--- a/frontend/core/src/com/gameware/game/GameWare.java
+++ b/frontend/core/src/com/gameware/game/GameWare.java
@@ -5,31 +5,47 @@ import com.badlogic.gdx.Gdx;
 import com.badlogic.gdx.graphics.GL20;
 import com.badlogic.gdx.graphics.Texture;
 import com.badlogic.gdx.graphics.g2d.SpriteBatch;
+import com.gameware.game.states.CreateJoinTournamentState;
+import com.gameware.game.states.GameStateManager;
 
 public class GameWare extends ApplicationAdapter {
-	SpriteBatch batch;
-	Texture img;
+	private SpriteBatch batch;
+	private GameStateManager gsm;
 	public static final int WIDTH = 480;
 	public static final int HEIGHT = 800;
-	
+	public static final String TITLE = "WackyWare!";
+	public static final String skinFilePath = "glassy/skin/glassy-ui.json";
+
+	private static GameWare instance = null;
+
+	public static GameWare getInstance(){
+		if( instance == null){
+			instance = new GameWare();
+		}
+		return instance;
+	}
 	@Override
 	public void create () {
+		gsm = new GameStateManager();
 		batch = new SpriteBatch();
-		img = new Texture("badlogic.jpg");
+		//music = Gdx.audio.newMusic(Gdx.files.internal(("music.mp3")));
+		//music.setLooping(true);
+		//music.setVolume(0.1f);
+		//music.play();
+		gsm.push(new CreateJoinTournamentState(gsm));
 	}
 
 	@Override
 	public void render () {
-		Gdx.gl.glClearColor(1, 0, 0, 1);
+		Gdx.gl.glClearColor(1, 1, 1, 1);
 		Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
-		batch.begin();
-		batch.draw(img, 0, 0);
-		batch.end();
+		gsm.update(Gdx.graphics.getDeltaTime());
+		gsm.render(batch);
 	}
-	
+
+
 	@Override
 	public void dispose () {
 		batch.dispose();
-		img.dispose();
 	}
 }
diff --git a/frontend/core/src/com/gameware/game/sprites/Sprite.java b/frontend/core/src/com/gameware/game/sprites/Sprite.java
index f780429dfec9caa833cf1a13e8d566669fd22de4..ea5d26d5bca8c29d706122fb22b52235b20a5443 100644
--- a/frontend/core/src/com/gameware/game/sprites/Sprite.java
+++ b/frontend/core/src/com/gameware/game/sprites/Sprite.java
@@ -1,5 +1,6 @@
 package com.gameware.game.sprites;
 
+import com.badlogic.gdx.graphics.g2d.SpriteBatch;
 import com.badlogic.gdx.math.Vector3;
 
 public abstract class Sprite {
@@ -12,7 +13,7 @@ public abstract class Sprite {
     public abstract void reset();
     public abstract Object report();
 
-    public abstract void draw();
+    public abstract void draw(SpriteBatch sb);
     public abstract void update();
     public abstract void dispose();
 
diff --git a/frontend/core/src/com/gameware/game/states/CreateJoinTournamentState.java b/frontend/core/src/com/gameware/game/states/CreateJoinTournamentState.java
index 5eac4e661c2a31a5383ff62f2a7e2c85133683d1..e301502a0db5b6f4419cf6079ed97b3d86f72b3f 100644
--- a/frontend/core/src/com/gameware/game/states/CreateJoinTournamentState.java
+++ b/frontend/core/src/com/gameware/game/states/CreateJoinTournamentState.java
@@ -3,50 +3,71 @@ 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 CreateJoinTournamentState extends State {
 
-    private Button backBtn;
     private Vector3 androidClick;
+    private Stage stage;
+    private Table table;
 
-    protected CreateJoinTournamentState(GameStateManager gsm) {
+    private int spacingOnBottom = Gdx.graphics.getHeight()/15;
+    private float fontScaleX = 3f;
+    private float fontScaleY = 3f;
+    private String backBtnText = "Back";
+
+
+
+    public CreateJoinTournamentState(GameStateManager gsm) {
         super(gsm);
-        cam.setToOrtho(false, GameWare.WIDTH, GameWare.HEIGHT);
-        backBtn = new Button();
+        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 loginBtn = new TextButton(backBtnText, skin);
+        loginBtn.addListener(new ClickListener() {
+            @Override
+            public void clicked(InputEvent e, float x, float y){
+                handleBtnClick();
+            }
+        });
+        table.add(loginBtn);
+
+        stage.addActor(table);
     }
 
     @Override
     protected void handleInput() {
-        if(Gdx.input.justTouched()){
-            androidClick = cam.unproject(new Vector3(Gdx.input.getX(),Gdx.input.getY(),0));
-            if(backBtn.isBtnClicked(androidClick.x,androidClick.y)){
-                gsm.push(new MenuState(gsm));
-            }
-        }
+
     }
 
     @Override
     public void update(float dt) {
-        handleInput();
-        backBtn.update(dt);
-        cam.update();    }
+        stage.act(dt);
+    }
 
     @Override
     public void render(SpriteBatch sb) {
-        sb.setProjectionMatrix(cam.combined);
-        sb.begin();
-        //sb.draw(bg, cam.position.x - (cam.viewportWidth / 2),0,HeliGame_2.WIDTH,HeliGame_2.HEIGHT);
-        //sb.draw(heli.getSprite(),heli.getPosition().x,heli.getPosition().y);
-        //sb.draw(skull.getTexture(),skull.getPosition().x,skull.getPosition().y);
-        //posText.getFont().draw(sb, posText.getText(), 10, HeliGame_2.HEIGHT - 10);
-        sb.end();
+        stage.draw();
     }
 
     @Override
     public void dispose() {
-        backBtn.dispose();
+        stage.dispose();
     }
 
     @Override
@@ -58,4 +79,8 @@ public class CreateJoinTournamentState extends State {
     public Object report() {
         return this;
     }
+
+    private void handleBtnClick(){
+        gsm.set(new MenuState(gsm));
+    }
 }
diff --git a/frontend/core/src/com/gameware/game/states/MenuState.java b/frontend/core/src/com/gameware/game/states/MenuState.java
new file mode 100644
index 0000000000000000000000000000000000000000..6a33fe03fd124cec7b0da686031cd2282b3db75e
--- /dev/null
+++ b/frontend/core/src/com/gameware/game/states/MenuState.java
@@ -0,0 +1,57 @@
+package com.gameware.game.states;
+
+import com.badlogic.gdx.graphics.g2d.SpriteBatch;
+
+public class MenuState extends State{
+    protected MenuState(GameStateManager gsm) {
+        super(gsm);
+        System.out.println("Du er i menu state :0");
+    }
+
+    @Override
+    protected void handleInput() {
+
+    }
+
+    @Override
+    public void update(float dt) {
+
+    }
+
+    @Override
+    public void render(SpriteBatch sb) {
+
+    }
+
+    @Override
+    public void dispose() {
+
+    }
+
+    @Override
+    public void reset() {
+
+    }
+
+    @Override
+    public Object report() {
+        return null;
+    }
+
+    private void optionsBtnClick(){
+
+    }
+
+    private void multiBtnClick(){
+
+    }
+
+    private void singleBtnClick(){
+
+    }
+
+    private void highscoreBtnClick(){
+
+    }
+
+}
diff --git a/frontend/core/src/com/gameware/game/states/ViewHighScoreState.java b/frontend/core/src/com/gameware/game/states/ViewHighScoreState.java
index 5b4d42f324f0633b8e44e7db00c63c361a727f4d..ac68a40a8c0b940cfb73e176af02b65671aa1d00 100644
--- a/frontend/core/src/com/gameware/game/states/ViewHighScoreState.java
+++ b/frontend/core/src/com/gameware/game/states/ViewHighScoreState.java
@@ -3,51 +3,69 @@ 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 Button backBtn;
     private Vector3 androidClick;
+    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";
 
     protected ViewHighScoreState(GameStateManager gsm) {
         super(gsm);
-        cam.setToOrtho(false, GameWare.WIDTH, GameWare.HEIGHT);
-        backBtn = new Button();
+        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 loginBtn = new TextButton(backBtnText, skin);
+        loginBtn.addListener(new ClickListener() {
+            @Override
+            public void clicked(InputEvent e, float x, float y){
+                handleBtnClick();
+            }
+        });
+        table.add(loginBtn);
+
+        stage.addActor(table);
     }
 
     @Override
     protected void handleInput() {
-        if(Gdx.input.justTouched()){
-            androidClick = cam.unproject(new Vector3(Gdx.input.getX(),Gdx.input.getY(),0));
-            if(backBtn.isBtnClicked(androidClick.x,androidClick.y)){
-                gsm.push(new MenuState(gsm));
-            }
-        }
+
     }
 
     @Override
     public void update(float dt) {
-        handleInput();
-        backBtn.update(dt);
-        cam.update();
+        stage.act(dt);
     }
 
     @Override
     public void render(SpriteBatch sb) {
-        sb.setProjectionMatrix(cam.combined);
-        sb.begin();
-        //sb.draw(bg, cam.position.x - (cam.viewportWidth / 2),0,HeliGame_2.WIDTH,HeliGame_2.HEIGHT);
-        //sb.draw(heli.getSprite(),heli.getPosition().x,heli.getPosition().y);
-        //sb.draw(skull.getTexture(),skull.getPosition().x,skull.getPosition().y);
-        //posText.getFont().draw(sb, posText.getText(), 10, HeliGame_2.HEIGHT - 10);
-        sb.end();
+        stage.draw();
     }
 
     @Override
     public void dispose() {
-        backBtn.dispose();
+        stage.dispose();
     }
 
     @Override
@@ -59,4 +77,8 @@ public class ViewHighScoreState extends State {
     public Object report() {
         return this;
     }
+
+    private void handleBtnClick(){
+        gsm.set(new CreateJoinTournamentState(gsm));
+    }
 }
\ No newline at end of file
diff --git a/frontend/core/src/com/gameware/game/states/ViewTournamentState.java b/frontend/core/src/com/gameware/game/states/ViewTournamentState.java
index 4f72d2084d8df0b2f4b29774ea70373ccda4d732..e5cbf002fd64ac593b8cbb7914a32c78e352e2ab 100644
--- a/frontend/core/src/com/gameware/game/states/ViewTournamentState.java
+++ b/frontend/core/src/com/gameware/game/states/ViewTournamentState.java
@@ -4,51 +4,69 @@ 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 Button backBtn;
     private Vector3 androidClick;
+    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";
 
     protected ViewTournamentState(GameStateManager gsm) {
         super(gsm);
-        cam.setToOrtho(false, GameWare.WIDTH, GameWare.HEIGHT);
-        backBtn = new Button();
+        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 loginBtn = new TextButton(backBtnText, skin);
+        loginBtn.addListener(new ClickListener() {
+            @Override
+            public void clicked(InputEvent e, float x, float y){
+                handleBtnClick();
+            }
+        });
+        table.add(loginBtn);
+
+        stage.addActor(table);
     }
 
     @Override
     protected void handleInput() {
-        if(Gdx.input.justTouched()){
-            androidClick = cam.unproject(new Vector3(Gdx.input.getX(),Gdx.input.getY(),0));
-            if(backBtn.isBtnClicked(androidClick.x,androidClick.y)){
-                gsm.push(new CreateJoinTournamentState(gsm));
-            }
-        }
+
     }
 
     @Override
     public void update(float dt) {
-        handleInput();
-        backBtn.update(dt);
-        cam.update();
+        stage.act(dt);
     }
 
     @Override
     public void render(SpriteBatch sb) {
-        sb.setProjectionMatrix(cam.combined);
-        sb.begin();
-        //sb.draw(bg, cam.position.x - (cam.viewportWidth / 2),0,HeliGame_2.WIDTH,HeliGame_2.HEIGHT);
-        //sb.draw(heli.getSprite(),heli.getPosition().x,heli.getPosition().y);
-        //sb.draw(skull.getTexture(),skull.getPosition().x,skull.getPosition().y);
-        //posText.getFont().draw(sb, posText.getText(), 10, HeliGame_2.HEIGHT - 10);
-        sb.end();
+        stage.draw();
     }
 
     @Override
     public void dispose() {
-        backBtn.dispose();
+        stage.dispose();
     }
 
     @Override
@@ -60,4 +78,8 @@ public class ViewTournamentState extends State {
     public Object report() {
         return this;
     }
+
+    private void handleBtnClick(){
+        gsm.set(new MenuState(gsm));
+    }
 }