diff --git a/pom.xml b/pom.xml
index e2432201b68d8a198a229e8520b7d87817ee043d..8e0c6095cb665275c7c8c2d337a3df21d044d240 100644
--- a/pom.xml
+++ b/pom.xml
@@ -17,6 +17,8 @@
 
 	<properties>
 		<java.version>11</java.version>
+
+		<projectlombok.version>1.18.12</projectlombok.version>
 	</properties>
 
 	<dependencies>
@@ -45,6 +47,12 @@
 				</exclusion>
 			</exclusions>
 		</dependency>
+
+		<dependency>
+			<groupId>org.projectlombok</groupId>
+			<artifactId>lombok</artifactId>
+			<version>${projectlombok.version}</version>
+		</dependency>
 	</dependencies>
 
 	<build>
diff --git a/src/main/java/com/example/demo/DemoApplication.java b/src/main/java/com/example/demo/DemoApplication.java
index 41072b944a0dbcb6d5d7054d6c408019e9822abc..41df739fe160b973085f28a82d69766179afaceb 100644
--- a/src/main/java/com/example/demo/DemoApplication.java
+++ b/src/main/java/com/example/demo/DemoApplication.java
@@ -1,5 +1,9 @@
 package com.example.demo;
 
+import com.example.demo.domain.GameLevel;
+import com.example.demo.domain.Person;
+import com.example.demo.repository.GameLevelRepository;
+import com.example.demo.repository.PersonRepository;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.boot.CommandLineRunner;
@@ -9,6 +13,7 @@ import org.springframework.context.annotation.Bean;
 
 import java.util.Arrays;
 import java.util.List;
+import java.util.Optional;
 
 @SpringBootApplication
 public class DemoApplication {
@@ -56,4 +61,22 @@ public class DemoApplication {
 					"\t" + personRepository.findByName(person.getName()).toString()));
 		};
 	}
+
+	@Bean
+	CommandLineRunner anotherDemo(GameLevelRepository gameLevelRepository) {
+		return args -> {
+
+			gameLevelRepository.deleteAll();
+
+			GameLevel gameLevel = new GameLevel();
+			gameLevel.setTitle("Title");
+
+
+			GameLevel savedGameLevel = gameLevelRepository.save(gameLevel);
+			log.info("Saved game level: {}", savedGameLevel);
+
+			Optional<GameLevel> foundGameLevel = gameLevelRepository.findById(savedGameLevel.getId());
+			log.info("Saved game level: {}", foundGameLevel);
+		};
+	}
 }
diff --git a/src/main/java/com/example/demo/domain/AssessmentLevel.java b/src/main/java/com/example/demo/domain/AssessmentLevel.java
new file mode 100644
index 0000000000000000000000000000000000000000..3b813c47d9ce32c6e975eb600d945e805b006e41
--- /dev/null
+++ b/src/main/java/com/example/demo/domain/AssessmentLevel.java
@@ -0,0 +1,19 @@
+package com.example.demo.domain;
+
+import lombok.Data;
+import org.neo4j.ogm.annotation.GeneratedValue;
+import org.neo4j.ogm.annotation.Id;
+import org.neo4j.ogm.annotation.NodeEntity;
+
+@NodeEntity
+@Data
+public class AssessmentLevel extends BaseLevel {
+
+    @Id
+    @GeneratedValue
+    private Long id;
+
+    private String assessmentType;
+
+
+}
diff --git a/src/main/java/com/example/demo/domain/BaseLevel.java b/src/main/java/com/example/demo/domain/BaseLevel.java
new file mode 100644
index 0000000000000000000000000000000000000000..988e4a5cfa07e39c503a8271c32338061d97e207
--- /dev/null
+++ b/src/main/java/com/example/demo/domain/BaseLevel.java
@@ -0,0 +1,12 @@
+package com.example.demo.domain;
+
+import lombok.Data;
+import org.neo4j.ogm.annotation.NodeEntity;
+
+@NodeEntity
+@Data
+public class BaseLevel {
+    private String title;
+    private String estimatedDuration;
+    private Long maxScore;
+}
diff --git a/src/main/java/com/example/demo/domain/GameLevel.java b/src/main/java/com/example/demo/domain/GameLevel.java
new file mode 100644
index 0000000000000000000000000000000000000000..27a33160295e0aa5fe9c92f28c2ae91ad32b07a9
--- /dev/null
+++ b/src/main/java/com/example/demo/domain/GameLevel.java
@@ -0,0 +1,29 @@
+package com.example.demo.domain;
+
+import lombok.Data;
+import org.neo4j.ogm.annotation.GeneratedValue;
+import org.neo4j.ogm.annotation.Id;
+import org.neo4j.ogm.annotation.NodeEntity;
+import org.neo4j.ogm.annotation.Relationship;
+
+import java.util.List;
+
+
+@NodeEntity
+@Data
+public class GameLevel extends BaseLevel {
+
+    @Id
+    @GeneratedValue
+    private Long id;
+
+    private String content;
+    private String solutionPenalized;
+    private String flag;
+    private String solution;
+    private String attachments;
+    private String incorrectFlagLimit;
+
+    @Relationship(type = "GAME_LEVEL_HINTS", direction = Relationship.UNDIRECTED)
+    private List<Hint> hints;
+}
diff --git a/src/main/java/com/example/demo/domain/Hint.java b/src/main/java/com/example/demo/domain/Hint.java
new file mode 100644
index 0000000000000000000000000000000000000000..e4a2c4148c1142ff297daddc1d4b74b94f09067d
--- /dev/null
+++ b/src/main/java/com/example/demo/domain/Hint.java
@@ -0,0 +1,18 @@
+package com.example.demo.domain;
+
+import lombok.Data;
+import org.neo4j.ogm.annotation.GeneratedValue;
+import org.neo4j.ogm.annotation.Id;
+
+@Data
+public class Hint {
+
+    @Id
+    @GeneratedValue
+    private Long id;
+
+    private String title;
+    private String content;
+    private String hintPenalty;
+    private String orderInLevel;
+}
diff --git a/src/main/java/com/example/demo/domain/InfoLevel.java b/src/main/java/com/example/demo/domain/InfoLevel.java
new file mode 100644
index 0000000000000000000000000000000000000000..eaed3579d28528654130b59428b4c11a0c462e51
--- /dev/null
+++ b/src/main/java/com/example/demo/domain/InfoLevel.java
@@ -0,0 +1,15 @@
+package com.example.demo.domain;
+
+import org.neo4j.ogm.annotation.GeneratedValue;
+import org.neo4j.ogm.annotation.Id;
+import org.neo4j.ogm.annotation.NodeEntity;
+
+@NodeEntity
+public class InfoLevel extends BaseLevel {
+
+    @Id
+    @GeneratedValue
+    private Long id;
+
+    private String content;
+}
diff --git a/src/main/java/com/example/demo/Person.java b/src/main/java/com/example/demo/domain/Person.java
similarity index 97%
rename from src/main/java/com/example/demo/Person.java
rename to src/main/java/com/example/demo/domain/Person.java
index e764ec890d56851b2fa3574686c90ba673a2942c..bea7fdb3a3e058aab92209952a810ba9e29e2711 100644
--- a/src/main/java/com/example/demo/Person.java
+++ b/src/main/java/com/example/demo/domain/Person.java
@@ -1,5 +1,5 @@
 
-package com.example.demo;
+package com.example.demo.domain;
 
 import org.neo4j.ogm.annotation.GeneratedValue;
 import org.neo4j.ogm.annotation.Id;
diff --git a/src/main/java/com/example/demo/repository/AssessmentLevelRepository.java b/src/main/java/com/example/demo/repository/AssessmentLevelRepository.java
new file mode 100644
index 0000000000000000000000000000000000000000..8f053645c82c07de09cdcf42c8ce45102c1c84a4
--- /dev/null
+++ b/src/main/java/com/example/demo/repository/AssessmentLevelRepository.java
@@ -0,0 +1,7 @@
+package com.example.demo.repository;
+
+import com.example.demo.domain.AssessmentLevel;
+import org.springframework.data.neo4j.repository.Neo4jRepository;
+
+public interface AssessmentLevelRepository  extends Neo4jRepository<AssessmentLevel, Long> {
+}
diff --git a/src/main/java/com/example/demo/repository/BaseLevelRepository.java b/src/main/java/com/example/demo/repository/BaseLevelRepository.java
new file mode 100644
index 0000000000000000000000000000000000000000..51a0b97bebdd447d128acf5abe16805ff7886cf0
--- /dev/null
+++ b/src/main/java/com/example/demo/repository/BaseLevelRepository.java
@@ -0,0 +1,7 @@
+package com.example.demo.repository;
+
+import com.example.demo.domain.BaseLevel;
+import org.springframework.data.neo4j.repository.Neo4jRepository;
+
+public interface BaseLevelRepository  extends Neo4jRepository<BaseLevel, Long> {
+}
diff --git a/src/main/java/com/example/demo/repository/GameLevelRepository.java b/src/main/java/com/example/demo/repository/GameLevelRepository.java
new file mode 100644
index 0000000000000000000000000000000000000000..92a29e07abe78ab9515dd6cf27d881e594ec647b
--- /dev/null
+++ b/src/main/java/com/example/demo/repository/GameLevelRepository.java
@@ -0,0 +1,7 @@
+package com.example.demo.repository;
+
+import com.example.demo.domain.GameLevel;
+import org.springframework.data.neo4j.repository.Neo4jRepository;
+
+public interface GameLevelRepository extends Neo4jRepository<GameLevel, Long> {
+}
diff --git a/src/main/java/com/example/demo/PersonRepository.java b/src/main/java/com/example/demo/repository/PersonRepository.java
similarity index 69%
rename from src/main/java/com/example/demo/PersonRepository.java
rename to src/main/java/com/example/demo/repository/PersonRepository.java
index 7d1a977f1f0fadef6e1e88e5cb97b50a1a005080..a4ef5786a2fe6b10bbe7b64c520ef2caa2dac584 100644
--- a/src/main/java/com/example/demo/PersonRepository.java
+++ b/src/main/java/com/example/demo/repository/PersonRepository.java
@@ -1,5 +1,6 @@
-package com.example.demo;
+package com.example.demo.repository;
 
+import com.example.demo.domain.Person;
 import org.springframework.data.repository.CrudRepository;
 
 public interface PersonRepository extends CrudRepository<Person, Long> {