diff --git a/Server/src/Persistence/Database.java b/Server/src/Persistence/Database.java
deleted file mode 100644
index 42bfeca962a793f8b0c8b8f5cb1527dba81b6ece..0000000000000000000000000000000000000000
--- a/Server/src/Persistence/Database.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package Persistence;
-
-public class Database {
-
-    /**
-     * Load or create sqLite database
-     */
-    public void setup() {
-    }
-
-    /**
-     * Create new database
-     */
-    private void createDatabase() {
-    }
-
-    /**
-     * Backup database
-     */
-    public void backupDatabase() {
-    }
-}
diff --git a/build.gradle b/build.gradle
index e722a74f04aee9c09272aeb3a39923bbde76e776..2d51019a0cfe8c942b0f175ec3695c18ee1d0469 100644
--- a/build.gradle
+++ b/build.gradle
@@ -57,6 +57,17 @@ project(":core") {
 
     dependencies {
         api "com.badlogicgames.gdx:gdx:$gdxVersion"
-        
+
+        // lombok
+        compileOnly 'org.projectlombok:lombok:1.18.12'
+        annotationProcessor 'org.projectlombok:lombok:1.18.12'
+
+        // h2 database
+        runtimeOnly 'com.h2database:h2'
+
+        // ormlite
+        compile group: 'com.j256.ormlite', name: 'ormlite-jdbc', version: '4.48'
+        compile 'com.j256.ormlite:ormlite-android:4.48'
+        compile 'com.j256.ormlite:ormlite-core:4.48'
     }
 }
diff --git a/core/src/com/galaxytrucker/galaxytruckerreloaded/Model/Crew/Crew.java b/core/src/com/galaxytrucker/galaxytruckerreloaded/Model/Crew/Crew.java
index 071789ef862d36f8840d587b2268d8465f91fef5..8bdbafa2740672793acce8d8c1fcab350c84111d 100644
--- a/core/src/com/galaxytrucker/galaxytruckerreloaded/Model/Crew/Crew.java
+++ b/core/src/com/galaxytrucker/galaxytruckerreloaded/Model/Crew/Crew.java
@@ -1,8 +1,42 @@
 package com.galaxytrucker.galaxytruckerreloaded.Model.Crew;
 
+import com.j256.ormlite.field.DatabaseField;
+import com.j256.ormlite.table.DatabaseTable;
+import lombok.*;
+
+@Getter
+@Setter
+@NoArgsConstructor(access = AccessLevel.PUBLIC)
+@RequiredArgsConstructor(access = AccessLevel.PUBLIC)
+@DatabaseTable(tableName = "crew")
 public class Crew {
+
+    /**
+     * ID
+     */
+    @DatabaseField(id = true, columnName = "ID")
+    @NonNull
+    private int id;
+
+    /**
+     * Name
+     */
+    @DatabaseField(columnName = "name")
+    @NonNull
     private String name;
+
+    /**
+     * Health
+     */
+    @DatabaseField(columnName = "health")
+    @NonNull
     private int health;
+
+    /**
+     * Max health
+     */
+    @DatabaseField(columnName = "maxhealth")
+    @NonNull
     private int maxhealth;
 
     /**
@@ -10,38 +44,7 @@ public class Crew {
      * Das Array besteht aus
      * [Weapon, Shield, Engine, Repair, Combat]
      */
+    @DatabaseField(columnName = "stats")
+    @NonNull
     private int[] stats;
-
-
-    public String getName() {
-        return name;
-    }
-
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    public int getHealth() {
-        return health;
-    }
-
-    public void setHealth(int health) {
-        this.health = health;
-    }
-
-    public int getMaxhealth() {
-        return maxhealth;
-    }
-
-    public void setMaxhealth(int maxhealth) {
-        this.maxhealth = maxhealth;
-    }
-
-    public int[] getStats() {
-        return stats;
-    }
-
-    public void setStats(int[] stats) {
-        this.stats = stats;
-    }
 }
diff --git a/core/src/com/galaxytrucker/galaxytruckerreloaded/Model/Planet/Planet.java b/core/src/com/galaxytrucker/galaxytruckerreloaded/Model/Planet/Planet.java
index c175c08b15f923ce695547c80a2aee9f990000f4..74efee93c43e483a73fd8e3422a19801349c7cd1 100644
--- a/core/src/com/galaxytrucker/galaxytruckerreloaded/Model/Planet/Planet.java
+++ b/core/src/com/galaxytrucker/galaxytruckerreloaded/Model/Planet/Planet.java
@@ -1,13 +1,33 @@
 package com.galaxytrucker.galaxytruckerreloaded.Model.Planet;
 
-public abstract class Planet {
+import com.j256.ormlite.field.DatabaseField;
+import lombok.*;
+
+import java.io.Serializable;
+
+@NoArgsConstructor(access = AccessLevel.PUBLIC)
+@RequiredArgsConstructor(access = AccessLevel.PUBLIC)
+@Getter
+@Setter
+public abstract class Planet implements Serializable {
 
     /** Planet name */
+    @DatabaseField(id = true,columnName = "name")
+    @NonNull
     private String name;
+
     /** Horizontale Position auf der Karte */
+    @DatabaseField(columnName = "posX")
+    @NonNull
     private float posX;
+
     /** Vertikale Position auf der Karte */
+    @DatabaseField(columnName = "posY")
+    @NonNull
     private float posY;
+
     /** Ereignis dass auf diesem Planeten eintrifft */
+    @DatabaseField(columnName = "event")
+    @NonNull
     private  PlanetEvent event;
 }
diff --git a/core/src/com/galaxytrucker/galaxytruckerreloaded/Model/Ship.java b/core/src/com/galaxytrucker/galaxytruckerreloaded/Model/Ship.java
index c042567c5d4a9cc47aa89419147065ecd5b24366..ac04de8de12024dd50c3026375163a83e6bf4cc6 100644
--- a/core/src/com/galaxytrucker/galaxytruckerreloaded/Model/Ship.java
+++ b/core/src/com/galaxytrucker/galaxytruckerreloaded/Model/Ship.java
@@ -1,15 +1,38 @@
 package com.galaxytrucker.galaxytruckerreloaded.Model;
 
-public class Ship {
+import com.j256.ormlite.field.DatabaseField;
+import com.j256.ormlite.table.DatabaseTable;
+import lombok.*;
+
+import java.io.Serializable;
+
+@AllArgsConstructor(access = AccessLevel.PUBLIC)
+@NoArgsConstructor(access = AccessLevel.PUBLIC)
+@Getter
+@Setter
+@DatabaseTable(tableName = "ship")
+public class Ship implements Serializable {
+
+    /**
+     * The user this ship belongs to
+     * (uses the user's username)
+     */
+    @DatabaseField(columnName = "ID", id = true)
+    @NonNull
+    private String associatedUser;
 
     /**
      * HP
      */
+    @NonNull
+    @DatabaseField(columnName = "HP")
     private int hp;
 
     /**
      * Shields
      */
+    @NonNull
+    @DatabaseField(columnName = "SHIELDS")
     private int shields;
 
     /**
diff --git a/core/src/com/galaxytrucker/galaxytruckerreloaded/Model/ShipLayout/Engine.java b/core/src/com/galaxytrucker/galaxytruckerreloaded/Model/ShipLayout/Engine.java
index 0fc06848bbb3bce91a1f33ef084cbd7c5bc0e4fa..6560f78eec82348d46b0834909ad398d254a9f3b 100644
--- a/core/src/com/galaxytrucker/galaxytruckerreloaded/Model/ShipLayout/Engine.java
+++ b/core/src/com/galaxytrucker/galaxytruckerreloaded/Model/ShipLayout/Engine.java
@@ -1,6 +1,22 @@
 package com.galaxytrucker.galaxytruckerreloaded.Model.ShipLayout;
 
-public class Engine extends System {
-    /** Ob ein Crewmitglied das System stärkt */
-    private boolean manned;
+import com.j256.ormlite.field.DatabaseField;
+import com.j256.ormlite.table.DatabaseTable;
+import lombok.*;
+
+import java.io.Serializable;
+
+@NoArgsConstructor(access = AccessLevel.PUBLIC)
+@RequiredArgsConstructor(access = AccessLevel.PUBLIC)
+@Getter
+@Setter
+@DatabaseTable(tableName = "engine")
+public class Engine extends System implements Serializable {
+
+    /**
+     * Ob ein Crew mitglied das System stärkt
+     */
+    @DatabaseField(columnName = "manned")
+    @NonNull
+    private boolean manned = false;
 }
diff --git a/core/src/com/galaxytrucker/galaxytruckerreloaded/Model/ShipLayout/Room.java b/core/src/com/galaxytrucker/galaxytruckerreloaded/Model/ShipLayout/Room.java
index 94c8d5117743e5d4c83109e4859a0d42b84145b1..7a1e3f05f64bdb4df39b1741450e2ba9f2f64ed3 100644
--- a/core/src/com/galaxytrucker/galaxytruckerreloaded/Model/ShipLayout/Room.java
+++ b/core/src/com/galaxytrucker/galaxytruckerreloaded/Model/ShipLayout/Room.java
@@ -1,24 +1,49 @@
 package com.galaxytrucker.galaxytruckerreloaded.Model.ShipLayout;
 
-public abstract class Room {
+import com.j256.ormlite.field.DatabaseField;
+import lombok.*;
+
+import java.io.Serializable;
+
+@NoArgsConstructor(access = AccessLevel.PUBLIC)
+@RequiredArgsConstructor(access = AccessLevel.PUBLIC)
+@Getter
+@Setter
+public abstract class Room implements Serializable {
+
+    /**
+     * ID
+     */
+    @DatabaseField(columnName = "ID", id = true)
+    @NonNull
+    private int id;
+
     /**
      * Höhe des Raumes. Räume sind immer rechteckig.
      */
+    @DatabaseField(columnName = "height")
+    @NonNull
     private int height;
 
     /**
      * Weite des Raumes. Räume sind immer rechteckig.
      */
+    @DatabaseField(columnName = "width")
+    @NonNull
     private int width;
 
     /**
      * Wenn ein Raum Schaden kriegt kann ein Loch entstehen.
      * Die Zahl ist der Wert wie lange dieses repariert werden muss um geschlossen zu werden.
      */
+    @DatabaseField(columnName = "breach")
+    @NonNull
     private int breach;
 
     /**
      * Der Sauerstoffgehalt des Raumes
      */
+    @DatabaseField(columnName = "oxygen")
+    @NonNull
     private int oxygen;
 }
diff --git a/core/src/com/galaxytrucker/galaxytruckerreloaded/Model/ShipLayout/Shield.java b/core/src/com/galaxytrucker/galaxytruckerreloaded/Model/ShipLayout/Shield.java
index 60f1506337d8aa0d664e59ac72149a22fa18b415..05e1d6a5d31ca566aac66dd35f8fa3f75b082dd1 100644
--- a/core/src/com/galaxytrucker/galaxytruckerreloaded/Model/ShipLayout/Shield.java
+++ b/core/src/com/galaxytrucker/galaxytruckerreloaded/Model/ShipLayout/Shield.java
@@ -1,7 +1,23 @@
 package com.galaxytrucker.galaxytruckerreloaded.Model.ShipLayout;
 
-public class Shield extends System {
-    /** Ob ein Crewmitglied das System stärkt */
-    private boolean manned;
+import com.j256.ormlite.field.DatabaseField;
+import com.j256.ormlite.table.DatabaseTable;
+import lombok.*;
+
+import java.io.Serializable;
+
+@Getter
+@Setter
+@RequiredArgsConstructor(access = AccessLevel.PUBLIC)
+@NoArgsConstructor(access = AccessLevel.PUBLIC)
+@DatabaseTable(tableName = "shield")
+public class Shield extends System implements Serializable {
+
+    /**
+     * Ob ein Crewmitglied das System stärkt
+     */
+    @DatabaseField(columnName = "manned")
+    @NonNull
+    private boolean manned = false;
 
 }
diff --git a/core/src/com/galaxytrucker/galaxytruckerreloaded/Model/ShipLayout/System.java b/core/src/com/galaxytrucker/galaxytruckerreloaded/Model/ShipLayout/System.java
index 5646eea88580175b11b70c371a966d621a0c11dd..1d4ba5a9d4bf1b1e878c2db2d1ca29af1288995e 100644
--- a/core/src/com/galaxytrucker/galaxytruckerreloaded/Model/ShipLayout/System.java
+++ b/core/src/com/galaxytrucker/galaxytruckerreloaded/Model/ShipLayout/System.java
@@ -1,7 +1,41 @@
 package com.galaxytrucker.galaxytruckerreloaded.Model.ShipLayout;
 
-public abstract class System extends Room {
+import com.j256.ormlite.field.DatabaseField;
+import lombok.*;
+
+import java.io.Serializable;
+
+@Getter
+@Setter
+@RequiredArgsConstructor(access = AccessLevel.PUBLIC)
+@NoArgsConstructor(access = AccessLevel.PUBLIC)
+public abstract class System extends Room implements Serializable {
+
+    /**
+     * ID
+     */
+    @DatabaseField(columnName = "ID", id = true)
+    @NonNull
+    private int id;
+
+    /**
+     * A system's energy level
+     */
+    @DatabaseField(columnName = "energy")
+    @NonNull
     private int energy;
+
+    /**
+     * Maximum energy a system can take
+     */
+    @DatabaseField(columnName = "maxEnergy")
+    @NonNull
     private int maxEnergy;
+
+    /**
+     * Damage the system has taken
+     */
+    @DatabaseField(columnName = "damage")
+    @NonNull
     private int damage;
 }
diff --git a/core/src/com/galaxytrucker/galaxytruckerreloaded/Model/User.java b/core/src/com/galaxytrucker/galaxytruckerreloaded/Model/User.java
new file mode 100644
index 0000000000000000000000000000000000000000..f25c27075476eeb8aab5107b3a165b456032bff6
--- /dev/null
+++ b/core/src/com/galaxytrucker/galaxytruckerreloaded/Model/User.java
@@ -0,0 +1,24 @@
+package com.galaxytrucker.galaxytruckerreloaded.Model;
+
+import com.j256.ormlite.field.DatabaseField;
+import com.j256.ormlite.table.DatabaseTable;
+import lombok.*;
+
+import java.io.Serializable;
+
+@RequiredArgsConstructor(access = AccessLevel.PUBLIC)
+@NoArgsConstructor(access = AccessLevel.PUBLIC)
+@Getter
+@Setter
+@DatabaseTable(tableName = "USER")
+public class User implements Serializable {
+
+    /** Username */
+    @DatabaseField(id = true,columnName = "USERNAME")
+    @NonNull
+    private String username;
+
+    /** The user's ship */
+    @DatabaseField(columnName = "userShip", foreign = true)
+    private Ship userShip;
+}
diff --git a/core/src/com/galaxytrucker/galaxytruckerreloaded/Server/Database/Database.java b/core/src/com/galaxytrucker/galaxytruckerreloaded/Server/Database/Database.java
new file mode 100644
index 0000000000000000000000000000000000000000..40393491f72a18ff151c9ce27014462d738cde97
--- /dev/null
+++ b/core/src/com/galaxytrucker/galaxytruckerreloaded/Server/Database/Database.java
@@ -0,0 +1,48 @@
+package com.galaxytrucker.galaxytruckerreloaded.Server.Database;
+
+import com.galaxytrucker.galaxytruckerreloaded.Model.User;
+import com.j256.ormlite.dao.Dao;
+import com.j256.ormlite.dao.DaoManager;
+import com.j256.ormlite.jdbc.JdbcConnectionSource;
+import com.j256.ormlite.support.ConnectionSource;
+import com.j256.ormlite.table.TableUtils;
+import lombok.*;
+
+@Getter
+@NoArgsConstructor(access = AccessLevel.PACKAGE)
+public class Database {
+
+    /**
+     * Database connection source
+     */
+    private ConnectionSource source;
+
+    /**
+     * Load or create h2 database
+     */
+    public void setup() {
+        String url = "jdbc:h2:./database";
+        try {
+            source = new JdbcConnectionSource(url);
+            Dao<User, String> userDao = DaoManager.createDao(source, User.class);
+            try {
+                TableUtils.createTable(source, User.class);
+            } catch (Exception f) {
+                f.printStackTrace();
+            }
+            User u = new User("test");
+            userDao.create(u);
+            User user2 = userDao.queryForId("test");
+            System.out.println(user2.getUsername());
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    /**
+     * Backup database
+     */
+    public void backupDatabase() {
+
+    }
+}
diff --git a/core/src/com/galaxytrucker/galaxytruckerreloaded/Server/Persistence/ObjectDAO.java b/core/src/com/galaxytrucker/galaxytruckerreloaded/Server/Persistence/ObjectDAO.java
new file mode 100644
index 0000000000000000000000000000000000000000..1ef30c8a12d43a044e6cd0e73e9944474fce93e0
--- /dev/null
+++ b/core/src/com/galaxytrucker/galaxytruckerreloaded/Server/Persistence/ObjectDAO.java
@@ -0,0 +1,19 @@
+package com.galaxytrucker.galaxytruckerreloaded.Server.Persistence;
+
+/** Template for DAOs */
+public abstract class ObjectDAO<T> {
+
+    /**
+     * Save the object to the database
+     *
+     * @param o - the object to save
+     */
+    public abstract void persist(T o);
+
+    /**
+     * Remove an object from the database
+     *
+     * @param o - the object to remove
+     */
+    public abstract void remove(T o);
+}
diff --git a/core/src/com/galaxytrucker/galaxytruckerreloaded/Server/Persistence/ShipDAO.java b/core/src/com/galaxytrucker/galaxytruckerreloaded/Server/Persistence/ShipDAO.java
new file mode 100644
index 0000000000000000000000000000000000000000..6abe9552b1357df463b6427a981f349eadf2f21a
--- /dev/null
+++ b/core/src/com/galaxytrucker/galaxytruckerreloaded/Server/Persistence/ShipDAO.java
@@ -0,0 +1,55 @@
+package com.galaxytrucker.galaxytruckerreloaded.Server.Persistence;
+
+import com.galaxytrucker.galaxytruckerreloaded.Model.Ship;
+import com.j256.ormlite.dao.Dao;
+import com.j256.ormlite.support.ConnectionSource;
+
+public class ShipDAO extends ObjectDAO<Ship> {
+
+    /**
+     * Database connection source
+     */
+    private ConnectionSource source;
+
+    /**
+     * ShipDAO
+     */
+    private Dao<Ship, String> shipDAO;
+
+    /**
+     * Constructor
+     *
+     * @param source - the database connection source
+     */
+    public ShipDAO(ConnectionSource source) {
+
+    }
+
+
+    /**
+     * Add a new ship to the database
+     *
+     * @param s - the ship to add
+     */
+    public void persist(Ship s) {
+
+    }
+
+    /**
+     * Get a ship from the database using its associated user
+     *
+     * @param user - the ship's associated user
+     */
+    private Ship getShipByUser(String user) {
+        return null;
+    }
+
+    /**
+     * Remove a ship from the database
+     *
+     * @param s - the ship to remove
+     */
+    public void remove(Ship s) {
+
+    }
+}
diff --git a/core/src/com/galaxytrucker/galaxytruckerreloaded/Server/Persistence/UserDAO.java b/core/src/com/galaxytrucker/galaxytruckerreloaded/Server/Persistence/UserDAO.java
new file mode 100644
index 0000000000000000000000000000000000000000..2cddac2951ce3a5e3aefaf7d99a9aa79a80489b3
--- /dev/null
+++ b/core/src/com/galaxytrucker/galaxytruckerreloaded/Server/Persistence/UserDAO.java
@@ -0,0 +1,64 @@
+package com.galaxytrucker.galaxytruckerreloaded.Server.Persistence;
+
+import com.galaxytrucker.galaxytruckerreloaded.Model.User;
+import com.j256.ormlite.dao.Dao;
+import com.j256.ormlite.support.ConnectionSource;
+
+public class UserDAO extends ObjectDAO<User> {
+
+    /**
+     * Database connection source
+     */
+    private ConnectionSource source;
+
+    /**
+     * UserDAO
+     */
+    private Dao<User, String> userDao;
+
+    /**
+     * Constructor
+     *
+     * @param source - database connection source
+     */
+    public UserDAO(ConnectionSource source) {
+
+    }
+
+    /**
+     * Add a new user to the database
+     *
+     * @param u - the user to add
+     */
+    public void persist(User u) {
+
+    }
+
+    /**
+     * Get a user from the database using his username
+     *
+     * @param username - the username of the user
+     */
+    private User getUserByUsername(String username) {
+        return null;
+    }
+
+    /**
+     * Remove a user from the database
+     *
+     * @param u - the user to delete
+     */
+    public void remove(User u) {
+
+    }
+
+    /**
+     * Remove a user using his username
+     *
+     * @param username - the username of the user to delete
+     */
+    private void removeUserByUsername(String username) {
+
+    }
+
+}
diff --git a/Server/src/Server.java b/core/src/com/galaxytrucker/galaxytruckerreloaded/Server/Server.java
similarity index 64%
rename from Server/src/Server.java
rename to core/src/com/galaxytrucker/galaxytruckerreloaded/Server/Server.java
index 26d6ee239d5bff5cb13d31da4ff1c58efd2ece19..e2dad86f390d001de54b98619e083cbd5966dbb4 100644
--- a/Server/src/Server.java
+++ b/core/src/com/galaxytrucker/galaxytruckerreloaded/Server/Server.java
@@ -1,10 +1,15 @@
-import Persistence.Database;
+package com.galaxytrucker.galaxytruckerreloaded.Server;
+
+import com.galaxytrucker.galaxytruckerreloaded.Server.Database.Database;
 
 /**
  * This class creates the game server and handles storing the data
  */
 public class Server {
 
+    /** The database */
+    private Database database;
+
     /**
      * Start the server
      */
@@ -30,9 +35,9 @@ public class Server {
     }
 
     /**
-     * Current database
+     * Initialize database
      */
-    private Database currentDatabase() {
-        return null;
+    private void initializeDatabase() {
+
     }
 }
diff --git a/core/src/com/galaxytrucker/galaxytruckerreloaded/Server/Services/ShipService.java b/core/src/com/galaxytrucker/galaxytruckerreloaded/Server/Services/ShipService.java
new file mode 100644
index 0000000000000000000000000000000000000000..9fb830675c95f104329ee4a4a100ad7271fc4519
--- /dev/null
+++ b/core/src/com/galaxytrucker/galaxytruckerreloaded/Server/Services/ShipService.java
@@ -0,0 +1,48 @@
+package com.galaxytrucker.galaxytruckerreloaded.Server.Services;
+
+import com.galaxytrucker.galaxytruckerreloaded.Model.Ship;
+import com.galaxytrucker.galaxytruckerreloaded.Model.User;
+import com.galaxytrucker.galaxytruckerreloaded.Server.Persistence.ShipDAO;
+import com.j256.ormlite.support.ConnectionSource;
+
+public class ShipService {
+
+    /**
+     * The DAO used by the service
+     */
+    private ShipDAO shipDAO;
+
+    /**
+     * Add a new ship to the database
+     *
+     * @param s - the ship to add
+     */
+    public void addShip(Ship s) {
+    }
+
+    /**
+     * Fetch a ship from the database using the user associated to it
+     *
+     * @param u - the user associated to the ship
+     */
+    public User getShipByUser(User u) {
+        return null;
+    }
+
+    /**
+     * Remove a ship from the database
+     *
+     * @param s - the ship to remove from the database
+     */
+    public void removeShip(Ship s) {
+    }
+
+    /**
+     * Constructor
+     *
+     * @param source - the database connection source
+     */
+    public ShipService(ConnectionSource source) {
+    }
+
+}
diff --git a/core/src/com/galaxytrucker/galaxytruckerreloaded/Server/Services/UserService.java b/core/src/com/galaxytrucker/galaxytruckerreloaded/Server/Services/UserService.java
new file mode 100644
index 0000000000000000000000000000000000000000..2a27c02edb6a385a94eba376f7c36c526627e7ad
--- /dev/null
+++ b/core/src/com/galaxytrucker/galaxytruckerreloaded/Server/Services/UserService.java
@@ -0,0 +1,57 @@
+package com.galaxytrucker.galaxytruckerreloaded.Server.Services;
+
+import com.galaxytrucker.galaxytruckerreloaded.Model.User;
+import com.galaxytrucker.galaxytruckerreloaded.Server.Persistence.UserDAO;
+import com.j256.ormlite.support.ConnectionSource;
+
+public class UserService {
+
+    /**
+     * The userDAO used to store and fetch data
+     */
+    private UserDAO userDAO;
+
+    /**
+     * add a new user to the database
+     *
+     * @param user - the user to add
+     */
+    public void addUser(User user) {
+    }
+
+    /**
+     * Fetch a user from the database
+     *
+     * @param username - the username of the user to fetch
+     */
+    public User getUser(String username) {
+        return null;
+    }
+
+    /**
+     * Remove a user from the database
+     *
+     * @param u - the user to remove
+     */
+    public void removeUser(User u) {
+
+    }
+
+    /**
+     * Remove a user using his username
+     *
+     * @param username - the username of the user to remove
+     */
+    public void removeUserByUsername(String username) {
+    }
+
+    /**
+     * Constructor
+     *
+     * @param source - the database connections source
+     */
+    public UserService(ConnectionSource source) {
+
+    }
+
+}