diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Exceptions/ParserError.java b/src/main/java/de/hdm_stuttgart/battlearena/Exceptions/ParserError.java
new file mode 100644
index 0000000000000000000000000000000000000000..0516d22c3bd159b2c0c671663114fcd4ab97c182
--- /dev/null
+++ b/src/main/java/de/hdm_stuttgart/battlearena/Exceptions/ParserError.java
@@ -0,0 +1,12 @@
+package de.hdm_stuttgart.battlearena.Exceptions;
+
+public class ParserError extends Exception{
+
+    public ParserError() {}
+
+    public ParserError(String message2)
+    {
+        super(message2);
+    }
+
+}
diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Persistance/Classes/GsonHandler.java b/src/main/java/de/hdm_stuttgart/battlearena/Persistance/Classes/GsonHandler.java
index 63a235bf5c6696c8cdde70d55a892dc376cf58ef..76962674a0c0874430df04ebad36bc53cef16183 100644
--- a/src/main/java/de/hdm_stuttgart/battlearena/Persistance/Classes/GsonHandler.java
+++ b/src/main/java/de/hdm_stuttgart/battlearena/Persistance/Classes/GsonHandler.java
@@ -11,25 +11,27 @@ import java.lang.reflect.Type;
 import java.util.ArrayList;
 
 public class GsonHandler {
-    Persistence singleton = Persistence.getInstance();
     Gson gson = new Gson();
 
     private static final Logger log = LogManager.getLogger(GsonHandler.class);
     Type mapDataType = new TypeToken<ArrayList<MapData>>(){}.getType();
 
-    public void loadMaps() {
+    public ArrayList<MapData> loadMaps() throws RuntimeException{
         try (FileReader reader = new FileReader("src/main/resources/maps/localMaps.json")) {
-            singleton.maps = gson.fromJson(reader, mapDataType);
+            ArrayList<MapData> maps = new ArrayList<MapData>();
+            maps = gson.fromJson(reader, mapDataType);
             log.info("GSON - Maps successfully loaded from JSON");
+            return maps;
         } catch (Exception e) {
             log.info(e);
             log.info("GSON - Loading Maps from JSON failed");
+            throw new RuntimeException("Error Loading Maps!");
         }
     }
 
-    public void updateMaps() {
+    public void updateMaps(ArrayList<MapData> maps) {
         try (FileWriter writer = new FileWriter("src/main/resources/maps/localMaps.json")) {
-            gson.toJson(singleton.maps, writer);
+            gson.toJson(maps, writer);
             log.info("GSON - Maps successfully written to JSON");
         } catch (
                 Exception e) {
diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Persistance/Classes/MapData.java b/src/main/java/de/hdm_stuttgart/battlearena/Persistance/Classes/MapData.java
index 249e4571fe0abdb1e6ceea180c7c91fba8ca066f..d24c8bc92f7373c1e52cadace35b2f9eb40d64a1 100644
--- a/src/main/java/de/hdm_stuttgart/battlearena/Persistance/Classes/MapData.java
+++ b/src/main/java/de/hdm_stuttgart/battlearena/Persistance/Classes/MapData.java
@@ -1,9 +1,11 @@
 package de.hdm_stuttgart.battlearena.Persistance.Classes;
-import org.apache.logging.log4j.Logger;
+
+import de.hdm_stuttgart.battlearena.Exceptions.ParserError;
 import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 
 public class MapData {
-    private static final Logger log = LogManager.getLogger(MapData.class);
+    private static final Logger log = LogManager.getLogger(Persistence.class);
 
     private String mapID;
     private String mapName;
@@ -12,24 +14,75 @@ public class MapData {
     private String mapData;
 
     protected MapData(String mapID, String mapName, String mapSize, String mapData) {
-    this.mapID = mapID;
-    this.mapName = mapName;
-    this.mapData = mapData;
+        try {
+            this.mapID = mapID;
+            this.mapName = mapName;
+            this.mapData = mapData;
+
+            sizeParser(mapSize);
+        }
+        catch (Exception ParserError){
+            log.error(ParserError);
+        }
+    }
+
+    public String getMapID() {
+        return mapID;
+    }
+
+    public String getMapName() {
+        return mapName;
+    }
+
+    public int getMapHeight() {
+        return mapHeight;
+    }
 
-    sizeParser(mapSize);
+    public int getMapWidth() {
+        return mapWidth;
     }
 
-    private void sizeParser(String mapSize){
-        int whereX = 0;
+    public String getMapData() {
+        return mapData;
+    }
+
+    private void sizeParser(String mapSize) throws ParserError {
+        try {
+            if (mapSize.length() < 3) {
+                throw new ParserError("Incomplete data");
+            }
 
-        for(int i = 0; i > mapSize.length(); i++){
-            if(mapSize.substring(i, i+1).equals("x")){
-                whereX = i;
-                break;
+            if (mapSize.length() % 2 == 0) {
+                throw new ParserError("Width and height don't match!");
             }
+
+            boolean noX = true;
+            for (int i = 0; i < mapSize.length(); i++) {
+                if (mapSize.charAt(i) == 'x' | mapSize.charAt(i) == 'X') {
+                    noX = false;
+                    break;
+                }
+            }
+            if (noX) {
+                throw new ParserError("X divider missing!");
+            }
+
+            int whereX = 0;
+            for (int i = 0; i < mapSize.length(); i++) {
+                if (mapSize.charAt(i) == 'x' | mapSize.charAt(i) == 'X') {
+                    whereX = i;
+                    break;
+                }
+            }
+
+            mapHeight = Integer.parseInt(mapSize.substring(0, whereX));
+            mapWidth = Integer.parseInt(mapSize.substring(whereX));
+
+        }
+        catch (Exception e){
+            log.error(e);
+            throw new ParserError("Parser error!");
         }
-        mapHeight = Integer.valueOf(mapSize.substring(0, whereX));
-        mapWidth = Integer.valueOf(mapSize.substring(whereX));
-    }
 
+    }
 }
diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Persistance/Classes/Persistence.java b/src/main/java/de/hdm_stuttgart/battlearena/Persistance/Classes/Persistence.java
index 4ddef45c7d8fcc455d1c05062317ab152ca92124..d9dc06824d1528062d570f945c11e74bb3618040 100644
--- a/src/main/java/de/hdm_stuttgart/battlearena/Persistance/Classes/Persistence.java
+++ b/src/main/java/de/hdm_stuttgart/battlearena/Persistance/Classes/Persistence.java
@@ -8,15 +8,21 @@ import java.util.ArrayList;
 import java.util.LinkedHashMap;
 
 public class Persistence {
+
     private static final Logger log = LogManager.getLogger(Persistence.class);
-    private static final Persistence singleton = new Persistence();
-    private Connection connection;
-    private LinkedHashMap<String, String> mapNames;
-    private int[] sizeArrayInt;
-    private String sizeString;
-    protected static PlayerStatistics statistics = new PlayerStatistics("", 0,0,0,0,0,0);
-    protected ArrayList<MapData> maps = new ArrayList<MapData>();
+    private static final Persistence persistence = new Persistence();
     private GsonHandler gsonHandler = new GsonHandler();
+    private AzureDB sqlHandler = new AzureDB();
+    private Connection connection;          //??
+    protected ArrayList<MapData> maps;
+    private int[] sizeArrayInt;             //??
+    private String sizeString;              //??
+    protected static PlayerStatistics statistics = new PlayerStatistics("", 0,0,0,0,0,0);
+
+
+
+
+
 
     private Persistence (){}
 
@@ -24,8 +30,22 @@ public class Persistence {
         statistics.setPlayerName(player);
 
     }
+
     public static Persistence getInstance(){
-        return singleton;
+        return persistence;
+    }
+
+    public void updateMaps(){
+        //load maps from SQL and put them into "maps" ArrayList and JSON File (using "updateMaps" Method from "GsonHandler")
+        //connect this method to button "Update Maps" in Controller from "? Scene"
+    }
+
+    public void loadMaps(){
+        maps = gsonHandler.loadMaps();
+    }
+
+    public void loadStatistics(){
+        //load Statistics from SQL into instance "statistics" of class "PlayerStatistics"
     }
 
 }
diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Persistance/Classes/PlayerStatistics.java b/src/main/java/de/hdm_stuttgart/battlearena/Persistance/Classes/PlayerStatistics.java
index 6a798a9e60260a8d49000dbef16aa13e99c1f035..fc315ba1a6d044641efe5df5d050f3c466bf85e0 100644
--- a/src/main/java/de/hdm_stuttgart/battlearena/Persistance/Classes/PlayerStatistics.java
+++ b/src/main/java/de/hdm_stuttgart/battlearena/Persistance/Classes/PlayerStatistics.java
@@ -6,7 +6,7 @@ import org.apache.logging.log4j.LogManager;
 public class PlayerStatistics {
     private static final Logger log = LogManager.getLogger(PlayerStatistics.class);
 
-
+    private String playerID;
     private String playerName;
     private int playerLost;
     private int playerWonRate;
diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Persistance/Classes/RuntimeInfo.java b/src/main/java/de/hdm_stuttgart/battlearena/Persistance/Classes/RuntimeInfo.java
new file mode 100644
index 0000000000000000000000000000000000000000..509453c64130efea130c95bff6498997b438284f
--- /dev/null
+++ b/src/main/java/de/hdm_stuttgart/battlearena/Persistance/Classes/RuntimeInfo.java
@@ -0,0 +1,49 @@
+package de.hdm_stuttgart.battlearena.Persistance.Classes;
+
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
+import java.util.LinkedHashMap;
+
+public class RuntimeInfo {
+
+    private static final Logger log = LogManager.getLogger(RuntimeInfo.class);
+    private static final RuntimeInfo runtimeinfo = new RuntimeInfo();
+    private final Persistence persistence = Persistence.getInstance();
+    private LinkedHashMap<String, String> mapNames;
+
+
+
+
+    private RuntimeInfo (){};
+    public static RuntimeInfo getInstance(){
+        return runtimeinfo;
+    }
+    private String getMap(String mapSelected) throws RuntimeException{
+
+        for(int i = 0; i < persistence.maps.size(); i++){
+           if(persistence.maps.get(i).getMapID().equals("mapSelected")){
+               return persistence.maps.get(i).getMapID();
+           }
+        }
+        throw new RuntimeException("no Map found");
+    }
+
+    private void updateStats(String outcome, String kills, String deaths, int gameTime){
+        //update PlayerStatistics
+        //update SQL
+    }
+
+    public void createMapList(){
+        for(int i = 0; i < persistence.maps.size(); i++){
+            //fill "mapNames" LinkedHashMap with Names from instances of "MapData" from "maps" ArrayList
+            //include exception for if "maps" is empty
+            //call method a program start
+        }
+    }
+
+    public void getStatsByID(String playerID){
+        //fetches from SQL stats by player with provided ID - players can display stats of other players in "Statistics" Scene
+    }
+
+}
diff --git a/src/main/resources/maps/localMaps.json b/src/main/resources/maps/localMaps.json
index caeeb4c11aa6ac6ea69ee672631c6cece2939c9b..60a2aa128c0e701b23ab45edd6f85c7a5fd445c2 100644
--- a/src/main/resources/maps/localMaps.json
+++ b/src/main/resources/maps/localMaps.json
@@ -1,6 +1,14 @@
-{
-  "name": "maps",
-  "version": "1.0.0",
-  "dependencies": {
+[
+  {
+  "mapID": "a593cafd1d061f0f463a2d2051bf4718aaaf5c48",
+  "mapName": "Arena1",
+  "mapSize": "18x18",
+  "mapData": "4 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 1 2 1 1 1 1 2 2 2 1 1 1 1 1 1 1 3 4 2 1 1 1 1 1 2 2 2 1 1 1 1 2 1 1 3 4 1 1 1 2 2 4 3 3 1 4 3 3 3 3 2 2 3 4 1 1 1 2 2 4 1 1 1 1 1 1 1 3 1 2 3 4 1 1 1 2 2 4 1 3 3 3 1 1 1 3 2 2 3 4 1 1 1 2 2 4 1 1 1 1 1 1 1 3 2 1 3 4 1 1 1 2 2 4 3 3 1 4 3 3 3 3 2 1 3 4 1 1 1 1 1 1 2 2 2 1 1 1 1 1 1 1 3 4 1 1 1 2 2 4 3 3 1 3 3 3 3 3 2 1 3 4 1 1 1 1 2 4 3 3 1 3 3 3 3 3 1 1 3 4 1 1 1 1 2 4 3 3 1 3 3 3 3 3 2 2 3 4 1 1 1 1 1 4 3 3 1 3 3 3 3 3 1 2 3 4 1 2 1 1 1 1 2 2 2 1 1 1 1 1 1 1 3 4 1 1 2 1 1 1 2 2 2 1 1 1 1 1 1 1 3 4 1 1 1 2 2 4 3 3 1 3 3 3 3 3 2 2 3 4 1 1 1 2 2 4 3 3 1 3 3 3 3 3 2 2 3 4 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3"
+  },
+  {
+    "mapID": "e559d8fbb53b333f5839cb3c6c0c515395afe344",
+    "mapName": "Arena2",
+    "mapSize": "18x18",
+    "mapData": "4 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 1 2 1 1 1 1 2 2 2 1 1 1 1 1 1 1 2 4 2 1 1 1 1 1 2 2 2 1 1 1 1 2 3 1 3 4 1 1 1 2 2 4 3 3 1 4 3 3 3 3 2 2 3 4 1 1 1 2 2 4 1 1 1 1 1 1 1 3 1 2 3 4 1 1 1 2 2 4 1 3 3 3 1 1 1 3 2 2 3 4 1 1 1 2 2 4 1 1 1 1 1 1 1 3 2 1 3 4 1 1 1 2 2 4 3 3 1 4 3 3 3 3 2 1 3 4 1 1 1 1 1 1 2 2 2 1 1 1 1 1 1 1 3 4 1 1 1 2 2 4 3 3 1 3 3 3 3 3 2 1 3 4 1 1 1 1 2 4 3 3 1 3 3 3 3 3 1 1 3 4 1 1 1 1 2 4 3 3 1 3 3 3 3 3 2 2 3 4 1 1 1 1 1 4 3 3 1 3 3 3 3 3 1 2 3 4 1 2 1 1 1 1 2 2 2 1 1 1 1 1 1 1 3 4 1 1 2 1 1 1 2 2 2 1 1 1 1 1 1 1 3 4 1 1 1 2 2 4 3 3 1 3 3 3 3 3 2 2 3 4 1 1 1 2 2 4 3 3 1 3 3 3 3 3 2 2 3 4 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3"
   }
-}
+]
\ No newline at end of file