diff --git a/core/src/com/galaxytrucker/galaxytruckerreloaded/Communication/ClientControllerCommunicator.java b/core/src/com/galaxytrucker/galaxytruckerreloaded/Communication/ClientControllerCommunicator.java
index 179b77c8c9530722dec84f08a00a2e170fe85dd9..eddd4de9d3412753098ef4083bf773ef40491b68 100644
--- a/core/src/com/galaxytrucker/galaxytruckerreloaded/Communication/ClientControllerCommunicator.java
+++ b/core/src/com/galaxytrucker/galaxytruckerreloaded/Communication/ClientControllerCommunicator.java
@@ -63,7 +63,7 @@ public class ClientControllerCommunicator {
         if (singleton == null){
             singleton = new ClientControllerCommunicator(client);
         }
-        // TODO CREATE ALL CONTROLLERS HERE
+        // TODO CREATE ALL CONTROLLERS HERE, all controllers should be singletons
         return singleton;
     }
 }
diff --git a/core/src/com/galaxytrucker/galaxytruckerreloaded/Model/Crew/Crew.java b/core/src/com/galaxytrucker/galaxytruckerreloaded/Model/Crew/Crew.java
index d7dfc054894f3d7a3211a0afbf0e04c37de4a595..6e1aa5665cca4170eed2ec42eec7d2872a4fbbf7 100644
--- a/core/src/com/galaxytrucker/galaxytruckerreloaded/Model/Crew/Crew.java
+++ b/core/src/com/galaxytrucker/galaxytruckerreloaded/Model/Crew/Crew.java
@@ -1,6 +1,7 @@
 package com.galaxytrucker.galaxytruckerreloaded.Model.Crew;
 
 import com.galaxytrucker.galaxytruckerreloaded.Model.ShipLayout.Room;
+import com.galaxytrucker.galaxytruckerreloaded.Model.ShipLayout.Tile;
 import lombok.*;
 
 import javax.persistence.*;
@@ -53,6 +54,10 @@ public class Crew implements Serializable {
     @OneToOne
     private Room currentRoom;
 
+    /** Tile the crew member is standing on */
+    @OneToOne
+    private Tile tile;
+
     /**
      * The price of the different crew-members
      */
diff --git a/core/src/com/galaxytrucker/galaxytruckerreloaded/Model/Ship.java b/core/src/com/galaxytrucker/galaxytruckerreloaded/Model/Ship.java
index caaac09f2b028807fb2cbf08f05a93983d56225b..7fbcebfcaf10256fee1c4f85d71b749186ae0a66 100644
--- a/core/src/com/galaxytrucker/galaxytruckerreloaded/Model/Ship.java
+++ b/core/src/com/galaxytrucker/galaxytruckerreloaded/Model/Ship.java
@@ -83,7 +83,7 @@ public class Ship implements Serializable {
      * The planet the ship is currently at
      */
     @NonNull
-    @ManyToOne
+    @ManyToOne(cascade = CascadeType.ALL)
     private Planet planet;
 
     /** Shields */
@@ -98,12 +98,12 @@ public class Ship implements Serializable {
 
     /** This ship's systems */
     @NonNull
-    @OneToMany
+    @OneToMany(cascade = CascadeType.ALL)
     private List<Room> systems;
 
     /** Inventory */
     @NonNull
-    @OneToMany
+    @OneToMany(cascade = CascadeType.ALL)
     private List<Weapon> inventory;
 
     /** Whether or not the ship is in combat */
diff --git a/core/src/com/galaxytrucker/galaxytruckerreloaded/Model/ShipLayout/Room.java b/core/src/com/galaxytrucker/galaxytruckerreloaded/Model/ShipLayout/Room.java
index 2999c1c4b4d53237f39edc0440c6db826862a6d6..9b143e022cad743455e52e4570cd4de3afafa7d9 100644
--- a/core/src/com/galaxytrucker/galaxytruckerreloaded/Model/ShipLayout/Room.java
+++ b/core/src/com/galaxytrucker/galaxytruckerreloaded/Model/ShipLayout/Room.java
@@ -4,12 +4,11 @@ package com.galaxytrucker.galaxytruckerreloaded.Model.ShipLayout;
 import com.galaxytrucker.galaxytruckerreloaded.Model.Crew.Crew;
 import lombok.*;
 
-import javax.persistence.Entity;
-import javax.persistence.Id;
-import javax.persistence.OneToMany;
+import javax.persistence.*;
 import java.io.Serializable;
 import java.util.List;
 
+/** Rooms make up the spaceship */
 @Getter
 @Setter
 @Entity
@@ -57,6 +56,11 @@ public abstract class Room implements Serializable {
 
     /** Crew in this system */
     @NonNull
-    @OneToMany
+    @OneToMany(cascade = CascadeType.ALL)
     private List<Crew> crew;
+
+    /** Tiles the room is made out of */
+    @NonNull
+    @OneToMany(cascade = CascadeType.ALL)
+    private List<Tile> tiles;
 }
diff --git a/core/src/com/galaxytrucker/galaxytruckerreloaded/Model/ShipLayout/Tile.java b/core/src/com/galaxytrucker/galaxytruckerreloaded/Model/ShipLayout/Tile.java
new file mode 100644
index 0000000000000000000000000000000000000000..1b56c202004dd68320c9debe076637d205fb9467
--- /dev/null
+++ b/core/src/com/galaxytrucker/galaxytruckerreloaded/Model/ShipLayout/Tile.java
@@ -0,0 +1,39 @@
+package com.galaxytrucker.galaxytruckerreloaded.Model.ShipLayout;
+
+import com.galaxytrucker.galaxytruckerreloaded.Model.Crew.Crew;
+import lombok.*;
+
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.OneToOne;
+import java.io.Serializable;
+
+/** Tiles make up the rooms */
+@NoArgsConstructor(access = AccessLevel.PUBLIC)
+@RequiredArgsConstructor(access = AccessLevel.PUBLIC)
+@Getter
+@Setter
+@Entity
+public class Tile implements Serializable {
+
+    /** ID */
+    @Id @NonNull
+    private int id;
+
+    /** Position x in room */
+    @NonNull
+    private int posX;
+
+    /** Position y in room */
+    @NonNull
+    private int posY;
+
+    /** Crew member on this tile */
+    @OneToOne
+    private Crew standingOnMe = null;
+
+    /** If the tile is empty */
+    public boolean isEmpty(){
+        return standingOnMe != null;
+    }
+}
diff --git a/core/src/com/galaxytrucker/galaxytruckerreloaded/Model/ShipLayout/WeaponSystem.java b/core/src/com/galaxytrucker/galaxytruckerreloaded/Model/ShipLayout/WeaponSystem.java
index 04622e6a4e888aaf62bfb9c81ee20efa9b931b7d..6da0fbb03f7e36405a5920a63f0cfb0832b0bbc5 100644
--- a/core/src/com/galaxytrucker/galaxytruckerreloaded/Model/ShipLayout/WeaponSystem.java
+++ b/core/src/com/galaxytrucker/galaxytruckerreloaded/Model/ShipLayout/WeaponSystem.java
@@ -3,10 +3,7 @@ package com.galaxytrucker.galaxytruckerreloaded.Model.ShipLayout;
 import com.galaxytrucker.galaxytruckerreloaded.Model.Weapons.Weapon;
 import lombok.*;
 
-import javax.persistence.ElementCollection;
-import javax.persistence.Entity;
-import javax.persistence.ManyToOne;
-import javax.persistence.OneToMany;
+import javax.persistence.*;
 import java.util.List;
 
 @RequiredArgsConstructor(access = AccessLevel.PUBLIC)
@@ -20,7 +17,7 @@ public class WeaponSystem extends System {
     private boolean manned = false;
 
     /** List of weapons this ship has */
-    @OneToMany
+    @OneToMany(cascade = CascadeType.ALL)
     private List<Weapon> shipWeapons;
 
 }
diff --git a/core/src/com/galaxytrucker/galaxytruckerreloaded/Model/User.java b/core/src/com/galaxytrucker/galaxytruckerreloaded/Model/User.java
index de50f1770633dfc9b60bddecd37b2db43be6516b..7c233300d6c9edd370212d867fdc123afa72464b 100644
--- a/core/src/com/galaxytrucker/galaxytruckerreloaded/Model/User.java
+++ b/core/src/com/galaxytrucker/galaxytruckerreloaded/Model/User.java
@@ -26,11 +26,11 @@ public class User implements Serializable {
     /**
      * The user's ship
      */
-    @OneToOne
+    @OneToOne(cascade = CascadeType.ALL)
     private Ship userShip;
 
     /** The user's overWorld map */
-    @OneToOne
+    @OneToOne(cascade = CascadeType.ALL)
     private Overworld overworld;
 
     /** Whether or not the user is logged in */