diff --git a/frontend/core/src/com/gameware/game/GameWare.java b/frontend/core/src/com/gameware/game/GameWare.java
index 10918e9e4bff559dd9542a0bae893ee523d3c819..ee8a0095effe4a946a02b21577cf95188f0b8949 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.PlayStateUnion;
 
 import java.io.IOException;
 import java.lang.reflect.Constructor;
@@ -44,7 +44,7 @@ public class GameWare extends ApplicationAdapter {
 	private Player player;
 	private List<Game> games = new ArrayList<>();
 
-	private Map<String, PlayStateTemplate> gameIdToPlayState = new HashMap<>();
+	private Map<String, PlayStateUnion> gameIdToPlayState = new HashMap<>();
 
 	//Singleton (lazy initialization)
 	private GameWare(){ }
@@ -117,11 +117,11 @@ public class GameWare extends ApplicationAdapter {
 		return games;
 	}
 
-	public Map<String, PlayStateTemplate> getGameIdToPlayState(){
+	public Map<String, PlayStateUnion> getGameIdToPlayState(){
 		return gameIdToPlayState;
 	}
 
-	public void updateGameMap(String id, PlayStateTemplate state){
+	public void updateGameMap(String id, PlayStateUnion state){
 		gameIdToPlayState.put(id, state);
 	}
 
@@ -197,7 +197,7 @@ public class GameWare extends ApplicationAdapter {
 			try {
 				Class cl = Class.forName(className);
 				Constructor con = cl.getConstructor(GameStateManager.class);
-				PlayStateTemplate state = (PlayStateTemplate) con.newInstance(gsm);
+				PlayStateUnion state = (PlayStateUnion) con.newInstance(gsm);
 				gameIdToPlayState.put(id, state);
 			} catch (Exception e) {
 				e.printStackTrace();
diff --git a/frontend/core/src/com/gameware/game/states/BubbleWrapState.java b/frontend/core/src/com/gameware/game/states/BubbleWrapState.java
index 5d449bf4a3c9293d4779a0761e583286744e40fa..57bb76cc5dc039027536cc1df779e6f5e90a9f7b 100644
--- a/frontend/core/src/com/gameware/game/states/BubbleWrapState.java
+++ b/frontend/core/src/com/gameware/game/states/BubbleWrapState.java
@@ -7,7 +7,7 @@ import com.gameware.game.sprites.Bubble;
 
 import java.util.ArrayList;
 
-public class BubbleWrapState extends PlayStateTemplate {
+public class BubbleWrapState extends PlayStateUnion {
     private Texture background;
     private Texture unpopped;
     private Texture popped1;
diff --git a/frontend/core/src/com/gameware/game/states/ColorRushState.java b/frontend/core/src/com/gameware/game/states/ColorRushState.java
index ee8adc4964755c5a507f4b6274d203164981872c..fe4283d8f0cdfc3bdddf0efec9f0fbec2dd04d31 100644
--- a/frontend/core/src/com/gameware/game/states/ColorRushState.java
+++ b/frontend/core/src/com/gameware/game/states/ColorRushState.java
@@ -9,7 +9,7 @@ import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
 
-public class ColorRushState extends PlayStateTemplate {
+public class ColorRushState extends PlayStateUnion {
 
     private List<ColorRushTarget> activeTargets;
     private List<ColorRushTarget> previousTargets;
diff --git a/frontend/core/src/com/gameware/game/states/CreateJoinTournamentState.java b/frontend/core/src/com/gameware/game/states/CreateJoinTournamentState.java
index 27469d98637024ada98b006ee3ea9f762254a4da..1d5e5f85b120271b38ff21a93ae33d477f279a16 100644
--- a/frontend/core/src/com/gameware/game/states/CreateJoinTournamentState.java
+++ b/frontend/core/src/com/gameware/game/states/CreateJoinTournamentState.java
@@ -26,7 +26,7 @@ import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
 
-public class CreateJoinTournamentState extends MenuStateTemplate {
+public class CreateJoinTournamentState extends MenuStateUnion {
 
 //    Data
     private List<Tournament> tournaments = new ArrayList<>();
diff --git a/frontend/core/src/com/gameware/game/states/CreateNewTournamentState.java b/frontend/core/src/com/gameware/game/states/CreateNewTournamentState.java
index 6c59b692821932e85d979503cb0d156d67e8bacd..8a8ee1ff1155b1f6321af582e320da089db26bc3 100644
--- a/frontend/core/src/com/gameware/game/states/CreateNewTournamentState.java
+++ b/frontend/core/src/com/gameware/game/states/CreateNewTournamentState.java
@@ -27,7 +27,7 @@ import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
 
-public class CreateNewTournamentState extends MenuStateTemplate {
+public class CreateNewTournamentState extends MenuStateUnion {
 
 //    Data
     private List<Game> games;
diff --git a/frontend/core/src/com/gameware/game/states/FinishedTournamentState.java b/frontend/core/src/com/gameware/game/states/FinishedTournamentState.java
index 8bdd401745ce8468b1247accfbf422a2537a6b4e..922e38da103fca8a382ffdd9dcacde6ebf2cf816 100644
--- a/frontend/core/src/com/gameware/game/states/FinishedTournamentState.java
+++ b/frontend/core/src/com/gameware/game/states/FinishedTournamentState.java
@@ -18,7 +18,7 @@ import com.gameware.game.models.Tournament;
 import java.util.ArrayList;
 import java.util.List;
 
-public class FinishedTournamentState extends MenuStateTemplate {
+public class FinishedTournamentState extends MenuStateUnion {
 
 //    Data
     private Tournament tournament;
diff --git a/frontend/core/src/com/gameware/game/states/FruitSlicerState.java b/frontend/core/src/com/gameware/game/states/FruitSlicerState.java
index 25e3e86833fb3487b94e9640043bdd66c040f372..80bf25d96a3e64508559ea08d73921df0eaefb6d 100644
--- a/frontend/core/src/com/gameware/game/states/FruitSlicerState.java
+++ b/frontend/core/src/com/gameware/game/states/FruitSlicerState.java
@@ -12,7 +12,7 @@ import com.gameware.game.sprites.SlicingCircle;
 import java.util.ArrayList;
 import java.util.List;
 
-public class FruitSlicerState extends PlayStateTemplate {
+public class FruitSlicerState extends PlayStateUnion {
     private int totalFruitsCut = 0;
     private float startingEmitFrequency = 1f;
     private float endingEmitFrequency = 0.2f;
diff --git a/frontend/core/src/com/gameware/game/states/LoginState.java b/frontend/core/src/com/gameware/game/states/LoginState.java
index 1c646a4921d6fde0c1134d451725e5c873af7585..2b35a1ff0f86fc147ed5160fe1f816d450848738 100644
--- a/frontend/core/src/com/gameware/game/states/LoginState.java
+++ b/frontend/core/src/com/gameware/game/states/LoginState.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;
 import com.badlogic.gdx.scenes.scene2d.InputListener;
@@ -19,7 +18,7 @@ import com.gameware.game.sprites.LoadingText;
 import java.io.IOException;
 import java.util.NoSuchElementException;
 
-public class LoginState extends MenuStateTemplate {
+public class LoginState extends MenuStateUnion {
 
 //    Labels
     private final Label titleLabel = new Label("GameWare", skin, "big");
diff --git a/frontend/core/src/com/gameware/game/states/MenuState.java b/frontend/core/src/com/gameware/game/states/MenuState.java
index c3777c972e914cb810bfc4df23f29387a7a03260..4d3972c985f292b5b50c39a4b6864fb6e7c41212 100644
--- a/frontend/core/src/com/gameware/game/states/MenuState.java
+++ b/frontend/core/src/com/gameware/game/states/MenuState.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.Texture;
 import com.badlogic.gdx.graphics.g2d.SpriteBatch;
 import com.badlogic.gdx.graphics.g2d.TextureRegion;
@@ -16,7 +15,7 @@ import com.badlogic.gdx.scenes.scene2d.utils.TextureRegionDrawable;
 import com.gameware.game.GameWare;
 import com.gameware.game.sprites.LoadingText;
 
-public class MenuState extends MenuStateTemplate{
+public class MenuState extends MenuStateUnion {
 
 //    Labels
     private final Label titleLabel = new Label("GameWare", skin, "big");
diff --git a/frontend/core/src/com/gameware/game/states/MenuStateTemplate.java b/frontend/core/src/com/gameware/game/states/MenuStateUnion.java
similarity index 98%
rename from frontend/core/src/com/gameware/game/states/MenuStateTemplate.java
rename to frontend/core/src/com/gameware/game/states/MenuStateUnion.java
index 80700b7a92ccb7634f96fa6469f0bd489c25262b..6c5b77fde6e90ad9834574ee00665acdf1bb0386 100644
--- a/frontend/core/src/com/gameware/game/states/MenuStateTemplate.java
+++ b/frontend/core/src/com/gameware/game/states/MenuStateUnion.java
@@ -18,7 +18,7 @@ import com.badlogic.gdx.scenes.scene2d.utils.TextureRegionDrawable;
 import com.badlogic.gdx.utils.Align;
 import com.gameware.game.GameWare;
 
-public abstract class MenuStateTemplate extends State{
+public abstract class MenuStateUnion extends State{
 
     //    Font
     protected final float fontScale = 3f;
@@ -55,7 +55,7 @@ public abstract class MenuStateTemplate extends State{
     protected Sound checkBoxSound;
 
 
-    public MenuStateTemplate(GameStateManager gsm){
+    public MenuStateUnion(GameStateManager gsm){
         super(gsm);
         skin.getFont("font").getData().setScale(fontScale);
 
diff --git a/frontend/core/src/com/gameware/game/states/OptionsState.java b/frontend/core/src/com/gameware/game/states/OptionsState.java
index eb13b34dd18c641cd5c5fb9baca045b86e8e5870..495cd0be7ee5c379582af84d48388b3403e95100 100644
--- a/frontend/core/src/com/gameware/game/states/OptionsState.java
+++ b/frontend/core/src/com/gameware/game/states/OptionsState.java
@@ -12,7 +12,7 @@ import com.badlogic.gdx.utils.Scaling;
 import com.gameware.game.GameWare;
 
 
-public class OptionsState extends MenuStateTemplate {
+public class OptionsState extends MenuStateUnion {
 
 //    Labels
     private final Label titleLabel = new Label("Options", skin, "big");
diff --git a/frontend/core/src/com/gameware/game/states/PauseState.java b/frontend/core/src/com/gameware/game/states/PauseState.java
index 2dbd72f35ab9ce0c392d2d67d9507a1bbfdb25c0..3ee77259f693b0b18f22fc01317e14917a45b456 100644
--- a/frontend/core/src/com/gameware/game/states/PauseState.java
+++ b/frontend/core/src/com/gameware/game/states/PauseState.java
@@ -16,7 +16,7 @@ import java.util.List;
 public class PauseState extends State {
 
 //    Data
-    private PlayStateTemplate pausedGame;
+    private PlayStateUnion pausedGame;
 
 //    Textures
     private Texture background;
@@ -40,7 +40,7 @@ public class PauseState extends State {
     private LoadingText loadingText;
 
 
-    public PauseState(GameStateManager gsm, PlayStateTemplate pausedGame) {
+    public PauseState(GameStateManager gsm, PlayStateUnion pausedGame) {
         super(gsm);
 
         this.background = new Texture(Gdx.files.internal("pause/PauseBackground.jpg"));
diff --git a/frontend/core/src/com/gameware/game/states/PlayStateTemplate.java b/frontend/core/src/com/gameware/game/states/PlayStateUnion.java
similarity index 98%
rename from frontend/core/src/com/gameware/game/states/PlayStateTemplate.java
rename to frontend/core/src/com/gameware/game/states/PlayStateUnion.java
index 7f7ed580f5f1262fac9fff091b67732975789f0d..ec0567119c59b51338d42b2fa202fe999a896bd4 100644
--- a/frontend/core/src/com/gameware/game/states/PlayStateTemplate.java
+++ b/frontend/core/src/com/gameware/game/states/PlayStateUnion.java
@@ -26,7 +26,7 @@ import java.io.IOException;
 import java.util.List;
 
 
-public abstract class PlayStateTemplate extends State {
+public abstract class PlayStateUnion extends State {
 
 //    Data
     private Round round = null;
@@ -51,7 +51,7 @@ public abstract class PlayStateTemplate extends State {
     private boolean currentScoreVisible = true;
 
 
-    public PlayStateTemplate(GameStateManager gsm){
+    public PlayStateUnion(GameStateManager gsm){
         super(gsm);
 
         // Default pause button (black color)
diff --git a/frontend/core/src/com/gameware/game/states/ScoreState.java b/frontend/core/src/com/gameware/game/states/ScoreState.java
index bf1c60893e720e012b1f51958266012717afc0ac..35b8b7e5ddfc79ea71fc6a24056b12ca6bfe6d2b 100644
--- a/frontend/core/src/com/gameware/game/states/ScoreState.java
+++ b/frontend/core/src/com/gameware/game/states/ScoreState.java
@@ -11,7 +11,7 @@ import com.badlogic.gdx.scenes.scene2d.ui.Table;
 import com.badlogic.gdx.utils.Align;
 import com.gameware.game.GameWare;
 
-public class ScoreState extends MenuStateTemplate {
+public class ScoreState extends MenuStateUnion {
 
 //    Data
     private State nextState;
diff --git a/frontend/core/src/com/gameware/game/states/SinglePlayerSelectGameState.java b/frontend/core/src/com/gameware/game/states/SinglePlayerSelectGameState.java
index 0611f8143b1f2a8d72684a6c6b0759627f5826d7..29b9b834d38b5b91c805d6af3fbea9c767427bde 100644
--- a/frontend/core/src/com/gameware/game/states/SinglePlayerSelectGameState.java
+++ b/frontend/core/src/com/gameware/game/states/SinglePlayerSelectGameState.java
@@ -17,7 +17,7 @@ import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 
-public class SinglePlayerSelectGameState extends MenuStateTemplate {
+public class SinglePlayerSelectGameState extends MenuStateUnion {
 
 //    Data
     private List<Game> games = new ArrayList<>();
@@ -124,7 +124,7 @@ public class SinglePlayerSelectGameState extends MenuStateTemplate {
 
         @Override
         public void clicked(InputEvent event, float x, float y) {
-            Map<String, PlayStateTemplate> map = GameWare.getInstance().getGameIdToPlayState();
+            Map<String, PlayStateUnion> map = GameWare.getInstance().getGameIdToPlayState();
             State s = map.get(game.getId());
             handleGameBtnClick(s);
         };
diff --git a/frontend/core/src/com/gameware/game/states/State.java b/frontend/core/src/com/gameware/game/states/State.java
index 30353c0a4e96caba096dc27ffbcfe3ca81b6333d..abcdafa05680509423bbe47497245d2137e60820 100644
--- a/frontend/core/src/com/gameware/game/states/State.java
+++ b/frontend/core/src/com/gameware/game/states/State.java
@@ -10,7 +10,7 @@ import com.gameware.game.GameWare;
 
 public abstract class State {
 
-//    Common variables between MenuStateTemplate and PlayStateTemplate
+//    Common variables between MenuStateUnion and PlayStateUnion
 
 //    Data
     protected GameStateManager gsm;
diff --git a/frontend/core/src/com/gameware/game/states/TournamentHighScoreState.java b/frontend/core/src/com/gameware/game/states/TournamentHighScoreState.java
index 2ff5fc0f063feced6a7bf6132c8f550a0ca52285..1aefbcd25482a795aa650aeefc15ace9d87c8f6d 100644
--- a/frontend/core/src/com/gameware/game/states/TournamentHighScoreState.java
+++ b/frontend/core/src/com/gameware/game/states/TournamentHighScoreState.java
@@ -17,7 +17,7 @@ import com.gameware.game.models.Tournament;
 import java.util.ArrayList;
 import java.util.List;
 
-public class TournamentHighScoreState extends MenuStateTemplate{
+public class TournamentHighScoreState extends MenuStateUnion {
 
 //    Data
     private Tournament tournament;
diff --git a/frontend/core/src/com/gameware/game/states/ViewHighScoreForGameState.java b/frontend/core/src/com/gameware/game/states/ViewHighScoreForGameState.java
index 4829afdd406e07049481383046e0f260724af47f..42d1c81f29208ad2af760db2e340711d273b6593 100644
--- a/frontend/core/src/com/gameware/game/states/ViewHighScoreForGameState.java
+++ b/frontend/core/src/com/gameware/game/states/ViewHighScoreForGameState.java
@@ -18,7 +18,7 @@ import java.util.ArrayList;
 import java.util.List;
 import java.util.NoSuchElementException;
 
-public class ViewHighScoreForGameState extends MenuStateTemplate {
+public class ViewHighScoreForGameState extends MenuStateUnion {
 
 //    Data
     private String playerId = GameWare.getInstance().getPlayer().getId();
diff --git a/frontend/core/src/com/gameware/game/states/ViewHighScoreState.java b/frontend/core/src/com/gameware/game/states/ViewHighScoreState.java
index 0439b88fa5f6ca5be22b1e907e080a09b42f0d3c..a3279667452fbfdc2749edfbac91304f6e9e0202 100644
--- a/frontend/core/src/com/gameware/game/states/ViewHighScoreState.java
+++ b/frontend/core/src/com/gameware/game/states/ViewHighScoreState.java
@@ -20,7 +20,7 @@ import com.gameware.game.sprites.LoadingText;
 
 import java.io.IOException;
 
-public class ViewHighScoreState extends MenuStateTemplate {
+public class ViewHighScoreState extends MenuStateUnion {
 
 //    Data
     private List<Game> games = new ArrayList<>();
diff --git a/frontend/core/src/com/gameware/game/states/ViewTournamentState.java b/frontend/core/src/com/gameware/game/states/ViewTournamentState.java
index 5a41fd004bc4f38d6e9af1b604894849d6fdcfb6..fe649e3ea9a3560a97269316211b473ef6db0269 100644
--- a/frontend/core/src/com/gameware/game/states/ViewTournamentState.java
+++ b/frontend/core/src/com/gameware/game/states/ViewTournamentState.java
@@ -24,7 +24,7 @@ import com.gameware.game.sprites.LoadingText;
 import java.io.IOException;
 import java.util.List;
 
-public class ViewTournamentState extends MenuStateTemplate {
+public class ViewTournamentState extends MenuStateUnion {
 
 //    Data
     private Tournament tournament;
@@ -108,7 +108,7 @@ public class ViewTournamentState extends MenuStateTemplate {
         currentRoundTable.pad(padding);
         currentRoundTable.setBackground(backgroundTableBlueRounded);
         currentRoundTable.add(new Label("This round:\n\n"+gameName,skin)).space(spacingLittle);
-        PlayStateTemplate state = GameWare.getInstance().getGameIdToPlayState().get(round.getGameId());
+        PlayStateUnion state = GameWare.getInstance().getGameIdToPlayState().get(round.getGameId());
         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();
@@ -273,7 +273,7 @@ public class ViewTournamentState extends MenuStateTemplate {
 
     private void handlePlayBtnClick(){
         if(GameWare.getInstance().isSoundEffectsOn()){ buttonPressSound.play(); }
-        PlayStateTemplate state = GameWare.getInstance().getGameIdToPlayState().get(round.getGameId());
+        PlayStateUnion state = GameWare.getInstance().getGameIdToPlayState().get(round.getGameId());
         state.setTournament(tournament);
         state.setRound(round);
         gsm.set(state);