diff --git a/frontend/core/src/com/gameware/game/states/ColorRushState.java b/frontend/core/src/com/gameware/game/states/ColorRushState.java
new file mode 100644
index 0000000000000000000000000000000000000000..d27a9d04a1bfc995440c72a5dc4488d27e35a908
--- /dev/null
+++ b/frontend/core/src/com/gameware/game/states/ColorRushState.java
@@ -0,0 +1,78 @@
+package com.gameware.game.states;
+import com.badlogic.gdx.Gdx;
+import com.badlogic.gdx.graphics.g2d.SpriteBatch;
+import com.badlogic.gdx.graphics.glutils.ShapeRenderer;
+
+public class ColorRushState extends PlayStateTemplate {
+    private int currentChosenColor = 0;
+    private int oldChosenColor = 0;
+    private ShapeRenderer shapeRenderer;
+
+    public ColorRushState(GameStateManager gsm){
+        super(gsm);
+        this.shapeRenderer = new ShapeRenderer();
+    }
+
+    @Override
+    protected void handleInput() {
+        oldChosenColor = currentChosenColor;
+
+        if(Gdx.input.justTouched()){
+            if(Gdx.input.getY() > (Gdx.graphics.getHeight() * 7 / 8)){
+
+                // Lower left button - red
+                if(Gdx.input.getX() < Gdx.graphics.getWidth() / 2){
+                    this.currentChosenColor = 0;
+                }
+
+                // Lower right button - purple
+                else{
+                    this.currentChosenColor = 1;
+                }
+            }
+            else if(Gdx.input.getY() <= Gdx.graphics.getHeight() * 7 / 8 && Gdx.input.getY() >= Gdx.graphics.getHeight() * 3 / 4){
+
+                // Upper left button - green
+                if(Gdx.input.getX() < Gdx.graphics.getWidth() / 2){
+                    this.currentChosenColor = 2;
+                }
+
+                // Upper right button - blue
+                else{
+                    this.currentChosenColor = 3;
+                }
+            }
+        }
+
+        Gdx.app.log("X", String.valueOf(Gdx.input.getX()));
+        Gdx.app.log("Y", String.valueOf(Gdx.input.getY()));
+        Gdx.app.log("COLOR", String.valueOf(this.currentChosenColor));
+    }
+
+    @Override
+    public void update(float dt) {
+        this.handleInput();
+    }
+
+    @Override
+    public void render(SpriteBatch sb) {
+
+    }
+
+    @Override
+    public void dispose() {
+
+    }
+
+    @Override
+    public void reset() {
+
+    }
+
+    @Override
+    public Object report() {
+        return null;
+    }
+
+
+}
diff --git a/frontend/core/src/com/gameware/game/states/PlayStateTemplate.java b/frontend/core/src/com/gameware/game/states/PlayStateTemplate.java
new file mode 100644
index 0000000000000000000000000000000000000000..65a779aef74db56587d4c439129ec75843335bb2
--- /dev/null
+++ b/frontend/core/src/com/gameware/game/states/PlayStateTemplate.java
@@ -0,0 +1,36 @@
+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);
+    }
+
+
+    public boolean isFinished(){
+        return this.isFinished;
+    }
+
+    public void setFinished(){
+        this.isFinished = true;
+    }
+
+    public void setScore(int score){
+        this.score = score;
+    }
+
+//    public void postScore(){
+//        this.qi.addHighscore(this.score);
+//    }
+}
+