diff --git a/Ressourcen/1080p.png b/Ressourcen/1080p.png
deleted file mode 100644
index 7ad9c81db739dcc97bc60470fb2107745990445a..0000000000000000000000000000000000000000
Binary files a/Ressourcen/1080p.png and /dev/null differ
diff --git a/Ressourcen/1080p.psd b/Ressourcen/1080p.psd
index af8af26d56737721876188d5a6a88d0f1ed718d7..d0dbfe83951bf044489550830865a265325d5bdb 100644
Binary files a/Ressourcen/1080p.psd and b/Ressourcen/1080p.psd differ
diff --git a/core/assets/1080p.png b/core/assets/1080p.png
new file mode 100644
index 0000000000000000000000000000000000000000..4a8a8e23058f56e09ac408a7679c1c561a866a76
Binary files /dev/null and b/core/assets/1080p.png differ
diff --git a/Ressourcen/Rainmeter-skin/resources/game_data/img/main_menus/start_select2.png b/core/assets/start_select2.png
similarity index 100%
rename from Ressourcen/Rainmeter-skin/resources/game_data/img/main_menus/start_select2.png
rename to core/assets/start_select2.png
diff --git a/core/src/com/galaxytrucker/galaxytruckerreloaded/Main.java b/core/src/com/galaxytrucker/galaxytruckerreloaded/Main.java
index 30f08fa6e76b07398dd8174db6170da104c839a2..ab2811cca4f59da10f3ebbf85fb7cb1937b98484 100644
--- a/core/src/com/galaxytrucker/galaxytruckerreloaded/Main.java
+++ b/core/src/com/galaxytrucker/galaxytruckerreloaded/Main.java
@@ -1,14 +1,23 @@
 package com.galaxytrucker.galaxytruckerreloaded;
 
-import com.badlogic.gdx.Game;
+import com.badlogic.gdx.ApplicationAdapter;
 import com.badlogic.gdx.Gdx;
 import com.badlogic.gdx.graphics.GL20;
 import com.badlogic.gdx.graphics.OrthographicCamera;
-import com.badlogic.gdx.graphics.Texture;
 import com.badlogic.gdx.graphics.g2d.SpriteBatch;
+import com.galaxytrucker.galaxytruckerreloaded.View.Screen.GameStateManager;
+import com.galaxytrucker.galaxytruckerreloaded.View.Screen.MainMenu;
 
-public class Main extends Game {
+public class Main extends ApplicationAdapter {
 
+    /**
+     * Settings
+     */
+    public static final int WIDTH = 1920;
+    public static final int HEIGHT = 1080;
+
+    public static final String TITLE = "Galaxy Trucker";
+    private GameStateManager gsm;
     /**
      * Sprite batch
      */
@@ -21,14 +30,21 @@ public class Main extends Game {
 
     @Override
     public void create() {
-        this.batch = new SpriteBatch();
-        this.camera = new OrthographicCamera();
+        batch = new SpriteBatch();
+        gsm = new GameStateManager();
+        //this.camera = new OrthographicCamera();
+        Gdx.gl.glClearColor(1, 0, 0, 1);
+        gsm.push(new MainMenu(gsm));
     }
 
     @Override
     public void render() {
-        Gdx.gl.glClearColor(1, 0, 0, 1);
         Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
+        gsm.update(Gdx.graphics.getDeltaTime());
+        //batch.begin();
+        //batch.draw("1080p.png",0,0,WIDTH, HEIGHT);
+        gsm.render(batch);
+        //batch.end();
     }
 
     @Override
diff --git a/core/src/com/galaxytrucker/galaxytruckerreloaded/View/Screen/GameStateManager.java b/core/src/com/galaxytrucker/galaxytruckerreloaded/View/Screen/GameStateManager.java
new file mode 100644
index 0000000000000000000000000000000000000000..1570abc0c6725e430a882d4118980bb46fac8198
--- /dev/null
+++ b/core/src/com/galaxytrucker/galaxytruckerreloaded/View/Screen/GameStateManager.java
@@ -0,0 +1,36 @@
+package com.galaxytrucker.galaxytruckerreloaded.View.Screen;
+
+import com.badlogic.gdx.graphics.g2d.SpriteBatch;
+
+import java.util.Stack;
+
+public class GameStateManager {
+
+    private Stack<State> states;
+
+    public GameStateManager(){
+        states = new Stack<State>(){};
+
+    }
+
+    public void push(State state){
+        states.push(state);
+    }
+
+    public void pop(){
+        states.pop();
+    }
+
+    public void set(State state){
+        states.pop();
+        states.push(state);
+    }
+
+    public void update(float dt){
+        states.peek().update(dt);
+    }
+
+    public void render(SpriteBatch sb){
+        states.peek().render(sb);
+    }
+}
diff --git a/core/src/com/galaxytrucker/galaxytruckerreloaded/View/Screen/MainMenu.java b/core/src/com/galaxytrucker/galaxytruckerreloaded/View/Screen/MainMenu.java
index a1bfe5513292d215d4201468c7fb4bdbb0e94aea..0f462c2e7e30ddf68aa66a8a9095b40c6d80496d 100644
--- a/core/src/com/galaxytrucker/galaxytruckerreloaded/View/Screen/MainMenu.java
+++ b/core/src/com/galaxytrucker/galaxytruckerreloaded/View/Screen/MainMenu.java
@@ -1,94 +1,80 @@
 package com.galaxytrucker.galaxytruckerreloaded.View.Screen;
 
-import com.badlogic.gdx.Screen;
-import com.badlogic.gdx.audio.Music;
-import com.badlogic.gdx.audio.Sound;
-import com.badlogic.gdx.graphics.OrthographicCamera;
 import com.badlogic.gdx.graphics.Texture;
 import com.badlogic.gdx.graphics.g2d.SpriteBatch;
-import com.badlogic.gdx.scenes.scene2d.ui.ImageButton;
 import com.galaxytrucker.galaxytruckerreloaded.Main;
-import com.galaxytrucker.galaxytruckerreloaded.View.Buttons.MenuButtons.*;
 
 /**
  * Main menu screen
  */
-public class MainMenu implements Screen {
+public class MainMenu extends State {
 
-    /**
+    private Texture background;
+    private Texture newGame;
+    /** Constructor  */
+    public MainMenu(GameStateManager gsm){
+        super(gsm);
+        background = new Texture("1080p.png");
+        newGame = new Texture("start_select2.png");
+    }
+
+    @Override
+    public void handleInput() {
+
+    }
+
+    @Override
+    public void update(float dt) {
+
+    }
+
+    @Override
+    public void render(SpriteBatch sb) {
+        sb.begin();
+        sb.draw(background, 0,0);
+        sb.draw(newGame, Main.WIDTH/2 - newGame.getWidth()/2,Main.HEIGHT/2, 248,50);
+        sb.end();
+    }
+
+    /*   *//**
      * The sprite batch
-     */
+     *//*
     private SpriteBatch batch;
 
-    /**
+    *//**
      * Orthographic camera
-     */
+     *//*
     private OrthographicCamera camera;
 
-    /**
+    *//**
      * The screen texture
-     */
+     *//*
     private Texture background;
 
-    /**
+    *//**
      * new game button. leads to shipselector
-     */
+     *//*
     private NewGameButton newGame;
 
-    /**
+    *//**
      * start game button. continues old game
-     */
+     *//*
     private StartButton startGame;
 
-    /**
+    *//**
      * quit button
-     */
+     *//*
     private QuitButton quitButton;
 
-    /**
+    *//**
      * Looping music track
-     */
+     *//*
     private Music music;
 
-    /**
+    *//**
      * Click sound effect
-     */
-    private Sound clickSound;
-
-    @Override
-    public void show() {
-
-    }
-
-    @Override
-    public void render(float delta) {
-
-    }
-
-    @Override
-    public void resize(int width, int height) {
-
-    }
-
-    @Override
-    public void pause() {
-
-    }
-
-    @Override
-    public void resume() {
-
-    }
-
-    @Override
-    public void hide() {
-
-    }
-
-    @Override
-    public void dispose() {
-
-    }
+     *//*
+    private Sound clickSound;*/
 
     /**
      * starts a new game.
@@ -114,7 +100,5 @@ public class MainMenu implements Screen {
 
     }
 
-    /** Constructor
-     * @param main - main class */
-    public MainMenu(Main main){}
+
 }
diff --git a/core/src/com/galaxytrucker/galaxytruckerreloaded/View/Screen/State.java b/core/src/com/galaxytrucker/galaxytruckerreloaded/View/Screen/State.java
new file mode 100644
index 0000000000000000000000000000000000000000..538085b16d25a5cbddb4c69a1539ec82b828bb4c
--- /dev/null
+++ b/core/src/com/galaxytrucker/galaxytruckerreloaded/View/Screen/State.java
@@ -0,0 +1,28 @@
+package com.galaxytrucker.galaxytruckerreloaded.View.Screen;
+
+
+import com.badlogic.gdx.graphics.OrthographicCamera;
+import com.badlogic.gdx.graphics.g2d.SpriteBatch;
+import com.badlogic.gdx.math.Vector3;
+
+public abstract class State {
+
+    /**
+     * Orthographic camera
+     */
+    protected OrthographicCamera camera;
+    protected Vector3 mouse;
+    protected GameStateManager gsm;
+
+    public State(GameStateManager gsm) {
+        this.gsm = gsm;
+        camera = new OrthographicCamera();
+        mouse = new Vector3();
+    }
+
+    protected abstract void handleInput();
+    public abstract void update(float dt);
+    public abstract void render(SpriteBatch sb);
+
+
+}
diff --git a/desktop/src/com/galaxytrucker/galaxytruckerreloaded/desktop/DesktopLauncher.java b/desktop/src/com/galaxytrucker/galaxytruckerreloaded/desktop/DesktopLauncher.java
index aa4c18bb550e6e111eb04dabc870fb439f0563de..741ee37ed6db2f9d4362f644a48c990b809af440 100644
--- a/desktop/src/com/galaxytrucker/galaxytruckerreloaded/desktop/DesktopLauncher.java
+++ b/desktop/src/com/galaxytrucker/galaxytruckerreloaded/desktop/DesktopLauncher.java
@@ -7,6 +7,10 @@ import com.galaxytrucker.galaxytruckerreloaded.Main;
 public class DesktopLauncher {
 	public static void main (String[] arg) {
 		LwjglApplicationConfiguration config = new LwjglApplicationConfiguration();
+		config.width = Main.WIDTH;
+		config.height = Main.HEIGHT;
+		config.title = Main.TITLE;
+
 		new LwjglApplication(new Main(), config);
 	}
 }