diff --git a/.idea/sqldialects.xml b/.idea/sqldialects.xml
index 996ed7a25d217b840a5f22f95931c214327a93ef..8641bbfdf2e2a8e1ae8a5ddca2037e037e9e7899 100644
--- a/.idea/sqldialects.xml
+++ b/.idea/sqldialects.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <project version="4">
   <component name="SqlDialectMappings">
-    <file url="file://$PROJECT_DIR$/src/main/java/de/hdm_stuttgart/battlearena/Persistance/Scripts/DDL_Script_Oracle.sql" dialect="AZURE" />
+    <file url="file://$PROJECT_DIR$/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Scripts/DDL_Script_Oracle.sql" dialect="AZURE" />
     <file url="PROJECT" dialect="AZURE" />
   </component>
 </project>
\ No newline at end of file
diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/AccountType.java b/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/AccountType.java
new file mode 100644
index 0000000000000000000000000000000000000000..145d7a4f6f54bad787231fc80b276a2abaae261b
--- /dev/null
+++ b/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/AccountType.java
@@ -0,0 +1,9 @@
+package de.hdm_stuttgart.battlearena.Model.DataStorage.Classes;
+
+public enum AccountType {
+
+    NONE,
+    LOCAL,
+    ONLINE
+
+}
diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Persistance/Classes/AppSettings.java b/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/AppSettings.java
similarity index 85%
rename from src/main/java/de/hdm_stuttgart/battlearena/Persistance/Classes/AppSettings.java
rename to src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/AppSettings.java
index a950b23530f8665bb0ff1aa2af11320bec72d6d5..24d7de8bba503c2d58df72b95d3de8901cd7a91b 100644
--- a/src/main/java/de/hdm_stuttgart/battlearena/Persistance/Classes/AppSettings.java
+++ b/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/AppSettings.java
@@ -1,4 +1,4 @@
-package de.hdm_stuttgart.battlearena.Persistance.Classes;
+package de.hdm_stuttgart.battlearena.Model.DataStorage.Classes;
 
 public class AppSettings {
 
diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Persistance/Classes/AzureDB.java b/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/AzureDB.java
similarity index 98%
rename from src/main/java/de/hdm_stuttgart/battlearena/Persistance/Classes/AzureDB.java
rename to src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/AzureDB.java
index 3663163805c0def4f4a89554beccea646d747884..bc3a4fb0c8cf1761af66b2e63c201d3e6fa34445 100644
--- a/src/main/java/de/hdm_stuttgart/battlearena/Persistance/Classes/AzureDB.java
+++ b/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/AzureDB.java
@@ -1,6 +1,6 @@
-package de.hdm_stuttgart.battlearena.Persistance.Classes;
+package de.hdm_stuttgart.battlearena.Model.DataStorage.Classes;
 
-import de.hdm_stuttgart.battlearena.Exceptions.DatabaseError;
+import de.hdm_stuttgart.battlearena.Model.DataStorage.Classes.Exceptions.DatabaseError;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
 
diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Exceptions/CryptoException.java b/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/Exceptions/CryptoException.java
similarity index 67%
rename from src/main/java/de/hdm_stuttgart/battlearena/Exceptions/CryptoException.java
rename to src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/Exceptions/CryptoException.java
index 1104fe22a50d7b34403b47faaeede9afd35edb17..1bb0c30885d3d243bf25ff82449b3c33fc7dc72b 100644
--- a/src/main/java/de/hdm_stuttgart/battlearena/Exceptions/CryptoException.java
+++ b/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/Exceptions/CryptoException.java
@@ -1,4 +1,4 @@
-package de.hdm_stuttgart.battlearena.Exceptions;
+package de.hdm_stuttgart.battlearena.Model.DataStorage.Classes.Exceptions;
 
 public class CryptoException extends Exception{
     public CryptoException(String message, Throwable throwable) {
diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Exceptions/DatabaseError.java b/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/Exceptions/DatabaseError.java
similarity index 68%
rename from src/main/java/de/hdm_stuttgart/battlearena/Exceptions/DatabaseError.java
rename to src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/Exceptions/DatabaseError.java
index 3c2e953535ca48de2903cebcd893380cebe023af..c115cf6e1d55cfff67d28c9a3049ada22df0ca9c 100644
--- a/src/main/java/de/hdm_stuttgart/battlearena/Exceptions/DatabaseError.java
+++ b/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/Exceptions/DatabaseError.java
@@ -1,4 +1,4 @@
-package de.hdm_stuttgart.battlearena.Exceptions;
+package de.hdm_stuttgart.battlearena.Model.DataStorage.Classes.Exceptions;
 
 public class DatabaseError extends Exception{
 
diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/Exceptions/ParserError.java b/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/Exceptions/ParserError.java
new file mode 100644
index 0000000000000000000000000000000000000000..a1f67ba38dc9ad7d181e9f891b927877636ade37
--- /dev/null
+++ b/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/Exceptions/ParserError.java
@@ -0,0 +1,12 @@
+package de.hdm_stuttgart.battlearena.Model.DataStorage.Classes.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/Model/DataStorage/Classes/GsonHandler.java
similarity index 97%
rename from src/main/java/de/hdm_stuttgart/battlearena/Persistance/Classes/GsonHandler.java
rename to src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/GsonHandler.java
index b8325b697298f0e9c4f7fa6a854e29526d7b9dd1..6742c97134e13cd614ddbb69396357280b33c1a1 100644
--- a/src/main/java/de/hdm_stuttgart/battlearena/Persistance/Classes/GsonHandler.java
+++ b/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/GsonHandler.java
@@ -1,9 +1,9 @@
-package de.hdm_stuttgart.battlearena.Persistance.Classes;
+package de.hdm_stuttgart.battlearena.Model.DataStorage.Classes;
 
 import com.google.gson.Gson;
 import com.google.gson.GsonBuilder;
 import com.google.gson.reflect.TypeToken;
-import de.hdm_stuttgart.battlearena.Exceptions.DatabaseError;
+import de.hdm_stuttgart.battlearena.Model.DataStorage.Classes.Exceptions.DatabaseError;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
 
diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Persistance/Classes/ISQLDataBase.java b/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/ISQLDataBase.java
similarity index 80%
rename from src/main/java/de/hdm_stuttgart/battlearena/Persistance/Classes/ISQLDataBase.java
rename to src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/ISQLDataBase.java
index 2bd72bd1a215338bc1b90e2e611d13d7bca9edbb..a51f71a0205053db9e067b4ef6835095c27c9c33 100644
--- a/src/main/java/de/hdm_stuttgart/battlearena/Persistance/Classes/ISQLDataBase.java
+++ b/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/ISQLDataBase.java
@@ -1,7 +1,6 @@
-package de.hdm_stuttgart.battlearena.Persistance.Classes;
+package de.hdm_stuttgart.battlearena.Model.DataStorage.Classes;
 
-import de.hdm_stuttgart.battlearena.Exceptions.CryptoException;
-import de.hdm_stuttgart.battlearena.Exceptions.DatabaseError;
+import de.hdm_stuttgart.battlearena.Model.DataStorage.Classes.Exceptions.DatabaseError;
 
 import java.sql.Connection;
 import java.util.ArrayList;
diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Persistance/Classes/MapData.java b/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/MapData.java
similarity index 86%
rename from src/main/java/de/hdm_stuttgart/battlearena/Persistance/Classes/MapData.java
rename to src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/MapData.java
index 02d71bd67c2b873e5ce39e3a16ffcfeb9040d26f..2a88a714ec211cc081dfb511673568de0d2ba6fd 100644
--- a/src/main/java/de/hdm_stuttgart/battlearena/Persistance/Classes/MapData.java
+++ b/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/MapData.java
@@ -1,7 +1,4 @@
-package de.hdm_stuttgart.battlearena.Persistance.Classes;
-
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
+package de.hdm_stuttgart.battlearena.Model.DataStorage.Classes;
 
 public class MapData {
     private String mapID;
diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Persistance/Classes/MapInfo.java b/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/MapInfo.java
similarity index 86%
rename from src/main/java/de/hdm_stuttgart/battlearena/Persistance/Classes/MapInfo.java
rename to src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/MapInfo.java
index 1d7606e43f3417b458df0c18f785996fd5fb1838..17fcfdfc65a8777e255f3501ed59e103bfb13f3b 100644
--- a/src/main/java/de/hdm_stuttgart/battlearena/Persistance/Classes/MapInfo.java
+++ b/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/MapInfo.java
@@ -1,7 +1,4 @@
-package de.hdm_stuttgart.battlearena.Persistance.Classes;
-
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
+package de.hdm_stuttgart.battlearena.Model.DataStorage.Classes;
 
 public class MapInfo {
 
diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/MapType.java b/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/MapType.java
new file mode 100644
index 0000000000000000000000000000000000000000..d7738b3c5205d4f217e2a27f0e88578cc34f6fa1
--- /dev/null
+++ b/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/MapType.java
@@ -0,0 +1,8 @@
+package de.hdm_stuttgart.battlearena.Model.DataStorage.Classes;
+
+public enum MapType {
+
+    COREMAP,
+    COMMUNITYMAP
+
+}
diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Persistance/Classes/OracleDB.java b/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/OracleDB.java
similarity index 96%
rename from src/main/java/de/hdm_stuttgart/battlearena/Persistance/Classes/OracleDB.java
rename to src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/OracleDB.java
index af151d47c91833436369625b205da2c7518c3620..c20d65fb302c4a3569f4d0b06b2f8958b4c2e4d3 100644
--- a/src/main/java/de/hdm_stuttgart/battlearena/Persistance/Classes/OracleDB.java
+++ b/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/OracleDB.java
@@ -1,7 +1,8 @@
-package de.hdm_stuttgart.battlearena.Persistance.Classes;
+package de.hdm_stuttgart.battlearena.Model.DataStorage.Classes;
 
-import de.hdm_stuttgart.battlearena.Exceptions.CryptoException;
-import de.hdm_stuttgart.battlearena.Exceptions.DatabaseError;
+import de.hdm_stuttgart.battlearena.Model.DataStorage.Classes.Utilities.CryptoUtils;
+import de.hdm_stuttgart.battlearena.Model.DataStorage.Classes.Exceptions.CryptoException;
+import de.hdm_stuttgart.battlearena.Model.DataStorage.Classes.Exceptions.DatabaseError;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
 
diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Persistance/Classes/Persistence.java b/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/Persistence.java
similarity index 87%
rename from src/main/java/de/hdm_stuttgart/battlearena/Persistance/Classes/Persistence.java
rename to src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/Persistence.java
index 9aba07c5ccd37a0a311b698105d8b14182273573..db91d1b662c3ff94c97d1aa3b6360a85ea5603f5 100644
--- a/src/main/java/de/hdm_stuttgart/battlearena/Persistance/Classes/Persistence.java
+++ b/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/Persistence.java
@@ -1,10 +1,10 @@
-package de.hdm_stuttgart.battlearena.Persistance.Classes;
+package de.hdm_stuttgart.battlearena.Model.DataStorage.Classes;
 
-import de.hdm_stuttgart.battlearena.Exceptions.DatabaseError;
+import de.hdm_stuttgart.battlearena.Model.DataStorage.Classes.Utilities.HashGenerator;
+import de.hdm_stuttgart.battlearena.Model.DataStorage.Classes.Exceptions.DatabaseError;
 import org.apache.logging.log4j.Logger;
 import org.apache.logging.log4j.LogManager;
 
-import java.io.File;
 import java.util.ArrayList;
 
 public class Persistence {
@@ -131,11 +131,16 @@ public class Persistence {
     public void loadPlayerStatistics() throws DatabaseError{
         try {
             if (account.getAccountState() == AccountType.NONE) {
-                //error - user must create account
+                throw new DatabaseError("Must create playerAccount first");
             } else if (account.getAccountState() == AccountType.LOCAL) {
                 statistics = gsonHandler.loadStats();
             } else {
-                db.getStatistics(account.getPlayerName());
+                if(account.getPlayerName().equals(db.checkCredentials(account.getPlayerName()))){   //checks if local and remote password match to username
+                    statistics = db.getStatistics(account.getPlayerName());
+                }
+                else{
+                    throw new DatabaseError("Wrong Password");
+                }
             }
         }
         catch(Exception e){
diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Persistance/Classes/PlayerAccount.java b/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/PlayerAccount.java
similarity index 91%
rename from src/main/java/de/hdm_stuttgart/battlearena/Persistance/Classes/PlayerAccount.java
rename to src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/PlayerAccount.java
index 8eac2aa4ce1a6f0ee723e88a342492674666163d..db701301210accb77174f28d2f1e182cebbb144a 100644
--- a/src/main/java/de/hdm_stuttgart/battlearena/Persistance/Classes/PlayerAccount.java
+++ b/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/PlayerAccount.java
@@ -1,4 +1,4 @@
-package de.hdm_stuttgart.battlearena.Persistance.Classes;
+package de.hdm_stuttgart.battlearena.Model.DataStorage.Classes;
 
 public class PlayerAccount {
 
diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Persistance/Classes/PlayerStatistics.java b/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/PlayerStatistics.java
similarity index 96%
rename from src/main/java/de/hdm_stuttgart/battlearena/Persistance/Classes/PlayerStatistics.java
rename to src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/PlayerStatistics.java
index d8f1fbecd81bf71385b3598b2f6a3b5f6eba2ca5..25ce6a994c0784e644cba77c93a0922ce1850b38 100644
--- a/src/main/java/de/hdm_stuttgart/battlearena/Persistance/Classes/PlayerStatistics.java
+++ b/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/PlayerStatistics.java
@@ -1,4 +1,4 @@
-package de.hdm_stuttgart.battlearena.Persistance.Classes;
+package de.hdm_stuttgart.battlearena.Model.DataStorage.Classes;
 
 import org.apache.logging.log4j.Logger;
 import org.apache.logging.log4j.LogManager;
diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Persistance/Classes/RuntimeInfo.java b/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/RuntimeInfo.java
similarity index 98%
rename from src/main/java/de/hdm_stuttgart/battlearena/Persistance/Classes/RuntimeInfo.java
rename to src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/RuntimeInfo.java
index ca702961c9ae7808355850646b04aa0ac64d0e3b..e7365fe9b1a860461a21cd661bb1b733d2518c95 100644
--- a/src/main/java/de/hdm_stuttgart/battlearena/Persistance/Classes/RuntimeInfo.java
+++ b/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/RuntimeInfo.java
@@ -1,4 +1,4 @@
-package de.hdm_stuttgart.battlearena.Persistance.Classes;
+package de.hdm_stuttgart.battlearena.Model.DataStorage.Classes;
 
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Persistance/Classes/CryptoUtils.java b/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/Utilities/CryptoUtils.java
similarity index 93%
rename from src/main/java/de/hdm_stuttgart/battlearena/Persistance/Classes/CryptoUtils.java
rename to src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/Utilities/CryptoUtils.java
index 82a392a77e8a9cfee965649e9d168c69d8429a68..7a1d263c82ccaaec5138f0d49c2fa249cd855705 100644
--- a/src/main/java/de/hdm_stuttgart/battlearena/Persistance/Classes/CryptoUtils.java
+++ b/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/Utilities/CryptoUtils.java
@@ -1,9 +1,8 @@
-package de.hdm_stuttgart.battlearena.Persistance.Classes;
-import de.hdm_stuttgart.battlearena.Exceptions.CryptoException;
+package de.hdm_stuttgart.battlearena.Model.DataStorage.Classes.Utilities;
+import de.hdm_stuttgart.battlearena.Model.DataStorage.Classes.Exceptions.CryptoException;
 
 import java.io.File;
 import java.io.FileInputStream;
-import java.io.FileOutputStream;
 import java.io.IOException;
 import java.security.InvalidKeyException;
 import java.security.Key;
diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Persistance/Classes/HashGenerator.java b/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/Utilities/HashGenerator.java
similarity index 91%
rename from src/main/java/de/hdm_stuttgart/battlearena/Persistance/Classes/HashGenerator.java
rename to src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/Utilities/HashGenerator.java
index d04d93f12c4fa22b99cc23be6da88d16bd280a3b..b6bead225f6a2d53dd83766c6af73a6204be0afc 100644
--- a/src/main/java/de/hdm_stuttgart/battlearena/Persistance/Classes/HashGenerator.java
+++ b/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/Utilities/HashGenerator.java
@@ -1,4 +1,4 @@
-package de.hdm_stuttgart.battlearena.Persistance.Classes;
+package de.hdm_stuttgart.battlearena.Model.DataStorage.Classes.Utilities;
 
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/Utilities/Parser.java b/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/Utilities/Parser.java
new file mode 100644
index 0000000000000000000000000000000000000000..09e97854b06534ac696fdc84dc89c1b5033e9474
--- /dev/null
+++ b/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/Utilities/Parser.java
@@ -0,0 +1,171 @@
+package de.hdm_stuttgart.battlearena.Model.DataStorage.Classes.Utilities;
+
+import de.hdm_stuttgart.battlearena.Model.DataStorage.Classes.Exceptions.ParserError;
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+public class Parser {
+
+    /*
+    Includes public static Parser methods for:
+    -username + password fields when creating account or logging in with existing credentials
+    -map name, when creating map
+    -IP-address field when joining game
+    -Map-name or map-ID, when searching for a map
+    -Parser for mapData from newly created map (length, formatting (spaces), tile-types, border-tiles etc.)
+    */
+
+    public static void usernameValid(String username) throws ParserError{
+
+        if(username.length() < 4){
+            throw new ParserError("Username too short! Min length is 4 characters.");
+        }
+        if(username.length() > 40){
+            throw new ParserError("Username too long! Max length is 40 characters.");
+        }
+
+        Pattern pat = Pattern.compile("[^a-z0-9_-]", Pattern.CASE_INSENSITIVE);
+        Matcher mat = pat.matcher(username);
+        boolean result = mat.find();
+        if(result){
+            throw new ParserError("Forbidden characters used! Only user letters A-Z or numbers 0-9 or symbols '-' or '_' !");
+        }
+    }
+
+    public static void passwordValid(String password) throws ParserError{
+
+        if(password.length() < 4){
+            throw new ParserError("Password too short! Min length is 4 characters.");
+        }
+        if(password.length() > 40){
+            throw new ParserError("Password too long! Max length is 40 characters.");
+        }
+
+        Pattern pat = Pattern.compile("[^a-z0-9_-]", Pattern.CASE_INSENSITIVE);
+        Matcher mat = pat.matcher(password);
+        boolean result = mat.find();
+        if(result){
+            throw new ParserError("Forbidden characters used! Only user letters A-Z or numbers 0-9 or symbols '-' or '_' !");
+        }
+    }
+
+    public static void mapNameValid(String mapName) throws ParserError{
+
+        if(mapName.length() < 4){
+            throw new ParserError("Map-Name too short! Min length is 4 characters.");
+        }
+        if(mapName.length() > 40){
+            throw new ParserError("Map-Name too long! Max length is 30 characters.");
+        }
+
+        Pattern pat = Pattern.compile("[^a-z0-9_-]", Pattern.CASE_INSENSITIVE);
+        Matcher mat = pat.matcher(mapName);
+        boolean result = mat.find();
+        if(result){
+            throw new ParserError("Forbidden characters used! Only user letters A-Z or numbers 0-9 or symbols '-' or '_' !");
+        }
+    }
+
+    public static void mapIDValid(String mapID) throws ParserError{
+
+        if(!(mapID.length() == 40)){
+            throw new ParserError("Map-ID length not correct. Must have length of 40 characters!");
+        }
+
+        Pattern pat = Pattern.compile("[^a-f0-9]", Pattern.CASE_INSENSITIVE);
+        Matcher mat = pat.matcher(mapID);
+        boolean result = mat.find();
+        if(result){
+            throw new ParserError("Forbidden characters used! Map ID only consists out of letters a-f and/or numbers 0-9!");
+        }
+    }
+
+    public static void ipAddressValid(String address) throws ParserError{
+
+        if(!(address.length() == 15)){
+            throw new ParserError("IP-Address too long. Must have length of 15 characters including block dividers (.) !");
+        }
+
+        Pattern pat = Pattern.compile("[^0-9]");    //checks if fields only use numbers
+        int position;
+        for(int i = 0; i < 4; i++) {
+            position = (i*3) + (i);
+            Matcher mat = pat.matcher(address.substring(position, position+3));
+            boolean result = mat.find();
+            if(result){
+                throw new ParserError("IP address does not match format xxx.xxx.xxx.xxx (numbers 0-9 for x)!");
+            }
+        }
+
+        position = 0;
+        for(int i = 0; i < 4; i++) {
+            position = (i*3) + (i);
+            Integer.parseInt(address.substring(position, position+3));
+            if(Integer.parseInt(address.substring(position, position+3)) > 255){
+                throw new ParserError("IP address does not match format xxx.xxx.xxx.xxx (numbers 0-9 for x)!");
+            }
+        }
+
+        position = 0;
+        for(int i = 1; i < 4; i++) {
+            position = (i*3) + (i);
+            if(!(address.charAt(position) == '.')){
+                throw new ParserError("IP address does not match format xxx.xxx.xxx.xxx (wrong symbol used as separator. Must use '.')!");
+            }
+        }
+    }
+
+    public static void mapDataValid(String mapData) throws ParserError{
+        if(!(mapData.length() == 647)){
+            throw new ParserError("Map-Data corrupted - must have length of 647 chars including spaces!");
+        }
+
+        for(int i = 1; i < 647; i = i + 2){
+            if(!(mapData.charAt(i) == ' ')){
+                throw new ParserError("Map-Data corrupted - must use space every other character!");
+            }
+        }
+
+        for(int i = 0; i < 647; i = i + 2){
+            if((Integer.parseInt(mapData.substring(i, i+1)) > 4) | (Integer.parseInt(mapData.substring(i, i+1)) <= 0)){
+                throw new ParserError("Map-Data corrupted - Tile number must be between 1 and 4!");
+            }
+        }
+
+        for(int i = 0; i < 18; i = i + 2){
+            if(!(Integer.parseInt(mapData.substring(i, i+1)) == 3)){
+                throw new ParserError("Map-Data corrupted - Top-Line must be border tiles!");
+            }
+        }
+
+        for(int i = 629; i < 647; i = i + 2){
+            if(!(Integer.parseInt(mapData.substring(i, i+1)) == 3)){
+                throw new ParserError("Map-Data corrupted - Bottom-Line must be border tiles!");
+            }
+        }
+
+        for(int i = 0; i < 647; i = i + 2){
+            if(i % 18 == 0 && !(Integer.parseInt(mapData.substring(i, i+1)) == 3)){
+                throw new ParserError("Map-Data corrupted - Left Edge must be border tiles!");
+            }
+        }
+
+        for(int i = 0; i < 647; i = i + 2){
+            if(i % 17 == 0 && !(Integer.parseInt(mapData.substring(i, i+1)) == 3)){
+                throw new ParserError("Map-Data corrupted - Right Edge must be border tiles!");
+            }
+        }
+
+        if(!(Integer.parseInt(mapData.substring(38, 39)) == 1) | !(Integer.parseInt(mapData.substring(68, 69)) == 1)){
+            throw new ParserError("Map-Data corrupted - Player spawn must use walkable tile!");
+        }
+
+        if(!(Integer.parseInt(mapData.substring(578, 579)) == 1) | !(Integer.parseInt(mapData.substring(606, 607)) == 1)){
+            throw new ParserError("Map-Data corrupted - Player spawn must use walkable tile!");
+        }
+
+    }
+
+
+}
diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Persistance/Scripts/DDL_Script_AzureDB.sql b/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Scripts/DDL_Script_AzureDB.sql
similarity index 100%
rename from src/main/java/de/hdm_stuttgart/battlearena/Persistance/Scripts/DDL_Script_AzureDB.sql
rename to src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Scripts/DDL_Script_AzureDB.sql
diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Persistance/Scripts/DDL_Script_Oracle.sql b/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Scripts/DDL_Script_Oracle.sql
similarity index 100%
rename from src/main/java/de/hdm_stuttgart/battlearena/Persistance/Scripts/DDL_Script_Oracle.sql
rename to src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Scripts/DDL_Script_Oracle.sql
diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Persistance/Classes/AccountType.java b/src/main/java/de/hdm_stuttgart/battlearena/Persistance/Classes/AccountType.java
deleted file mode 100644
index c252bbbaae62f8552e269f063a226a377fb42ed1..0000000000000000000000000000000000000000
--- a/src/main/java/de/hdm_stuttgart/battlearena/Persistance/Classes/AccountType.java
+++ /dev/null
@@ -1,9 +0,0 @@
-package de.hdm_stuttgart.battlearena.Persistance.Classes;
-
-public enum AccountType {
-
-    NONE,
-    LOCAL,
-    ONLINE
-
-}
diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Persistance/Classes/MapType.java b/src/main/java/de/hdm_stuttgart/battlearena/Persistance/Classes/MapType.java
deleted file mode 100644
index e1ec32ca1e9b5898bdd810b0ac1bea2d1557f0af..0000000000000000000000000000000000000000
--- a/src/main/java/de/hdm_stuttgart/battlearena/Persistance/Classes/MapType.java
+++ /dev/null
@@ -1,8 +0,0 @@
-package de.hdm_stuttgart.battlearena.Persistance.Classes;
-
-public enum MapType {
-
-    COREMAP,
-    COMMUNITYMAP
-
-}
diff --git a/src/main/java/module-info.java b/src/main/java/module-info.java
index 2ec317dca4c143482e2fc777a91c7319fb3d1853..709ade468a755a08cdc96ccb0e622f9f5e6effc6 100644
--- a/src/main/java/module-info.java
+++ b/src/main/java/module-info.java
@@ -10,9 +10,10 @@ module gui {
 
 
     opens de.hdm_stuttgart.battlearena to javafx.fxml;
-    opens de.hdm_stuttgart.battlearena.Persistance.Classes to com.google.gson;
+    opens de.hdm_stuttgart.battlearena.Model.DataStorage.Classes to com.google.gson;
+    opens de.hdm_stuttgart.battlearena.Model.DataStorage.Classes.Exceptions to com.google.gson;
+    opens de.hdm_stuttgart.battlearena.Model.DataStorage.Classes.Utilities to com.google.gson;
     exports de.hdm_stuttgart.battlearena.Main;
     exports de.hdm_stuttgart.battlearena.Controller;
     exports de.hdm_stuttgart.battlearena.Model.Multiplayer;
-    opens de.hdm_stuttgart.battlearena.Exceptions to com.google.gson;
 }
diff --git a/src/test/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/Utilities/ParserTest.java b/src/test/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/Utilities/ParserTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..32497a76eefacf143535a895667a3b732c7a11c6
--- /dev/null
+++ b/src/test/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/Utilities/ParserTest.java
@@ -0,0 +1,33 @@
+package de.hdm_stuttgart.battlearena.Model.DataStorage.Classes.Utilities;
+
+import de.hdm_stuttgart.battlearena.Model.DataStorage.Classes.Exceptions.ParserError;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.*;
+class ParserTest {
+
+    @Test
+    void usernameValid() {
+        assertThrows(ParserError.class, () -> Parser.usernameValid("hi"), "Username too short! Min length is 4 characters.");
+    }
+
+    @Test
+    void passwordValid() {
+    }
+
+    @Test
+    void mapNameValid() {
+    }
+
+    @Test
+    void mapIDValid() {
+    }
+
+    @Test
+    void ipAddressValid() {
+    }
+
+    @Test
+    void mapDataValid() {
+    }
+}
\ No newline at end of file