diff --git a/java2-lab02-common-v3/.gitignore b/java2-lab02-common-v3/.gitignore
deleted file mode 100644
index 98b99a551e28559528e090cbfc676dcff9bd7def..0000000000000000000000000000000000000000
--- a/java2-lab02-common-v3/.gitignore
+++ /dev/null
@@ -1,16 +0,0 @@
-# Eclipse
-.classpath
-.project
-.settings/
- 
-# Intellij
-.idea/
-*.iml
-*.iws
- 
-# Mac
-.DS_Store
- 
-# Maven
-log/
-target/
diff --git a/java2-lab02-common-v3/pom.xml b/java2-lab02-common-v3/pom.xml
deleted file mode 100644
index b171bf29b9be1dbe741d1da5c486afce8df2e551..0000000000000000000000000000000000000000
--- a/java2-lab02-common-v3/pom.xml
+++ /dev/null
@@ -1,79 +0,0 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-	<modelVersion>4.0.0</modelVersion>
-	<groupId>cz.vsb.fei.java2</groupId>
-	<artifactId>java2-lab02-common-v3</artifactId>
-	<version>0.0.1-SNAPSHOT</version>
-
-	<name>java2-lab02-common-v3</name>
-
-	<packaging>jar</packaging>
-
-	<properties>
-		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-		<maven.compiler.release>21</maven.compiler.release>
-		<JUnit.version>5.11.0</JUnit.version>
-		<log4j.version>2.23.1</log4j.version>
-		<lombok.version>1.18.34</lombok.version>
-	</properties>
-	<dependencyManagement>
-		<dependencies>
-			<dependency>
-				<groupId>org.junit</groupId>
-				<artifactId>junit-bom</artifactId>
-				<version>${JUnit.version}</version>
-				<type>pom</type>
-				<scope>import</scope>
-			</dependency>
-		</dependencies>
-	</dependencyManagement>
-
-	<dependencies>
-		<dependency>
-			<groupId>org.junit.jupiter</groupId>
-			<artifactId>junit-jupiter</artifactId>
-			<scope>test</scope>
-		</dependency>
-		<dependency>
-			<groupId>org.apache.logging.log4j</groupId>
-			<artifactId>log4j-core</artifactId>
-			<version>${log4j.version}</version>
-		</dependency>
-		<dependency>
-			<groupId>org.apache.logging.log4j</groupId>
-			<artifactId>log4j-api</artifactId>
-			<version>${log4j.version}</version>
-		</dependency>
-		<dependency>
-			<groupId>org.projectlombok</groupId>
-			<artifactId>lombok</artifactId>
-			<version>${lombok.version}</version>
-			<scope>provided</scope>
-		</dependency>
-	</dependencies>
-
-	<build>
-		<plugins>
-			<plugin>
-				<groupId>org.apache.maven.plugins</groupId>
-				<artifactId>maven-compiler-plugin</artifactId>
-				<version>3.13.0</version>
-				<configuration>
-					<annotationProcessorPaths>
-						<path>
-							<groupId>org.projectlombok</groupId>
-							<artifactId>lombok</artifactId>
-							<version>${lombok.version}</version>
-						</path>
-					</annotationProcessorPaths>
-				</configuration>
-			</plugin>
-			<plugin>
-				<artifactId>maven-surefire-plugin</artifactId>
-				<version>3.5.0</version>
-			</plugin>
-		</plugins>
-	</build>
-
-</project>
diff --git a/java2-lab02-common-v3/src/main/java/module-info.java b/java2-lab02-common-v3/src/main/java/module-info.java
deleted file mode 100644
index e9edf40111700e7315c7992a3c5f0eee930fb438..0000000000000000000000000000000000000000
--- a/java2-lab02-common-v3/src/main/java/module-info.java
+++ /dev/null
@@ -1,5 +0,0 @@
-module cz.vsb.fei.java2.lab02.common_module {
-	requires static lombok;
-	requires org.apache.logging.log4j;
-	exports cz.vsb.fei.java2.lab02.common;
-}
\ No newline at end of file
diff --git a/java2-lab02-common-v3/src/test/java/cz/vsb/fei/java2/lab01/AppTest.java b/java2-lab02-common-v3/src/test/java/cz/vsb/fei/java2/lab01/AppTest.java
deleted file mode 100644
index 9102a3af357bbfe62c176afc996a511c63fde18c..0000000000000000000000000000000000000000
--- a/java2-lab02-common-v3/src/test/java/cz/vsb/fei/java2/lab01/AppTest.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package cz.vsb.fei.java2.lab01;
-
-import static org.junit.jupiter.api.Assertions.assertTrue;
-
-import org.junit.jupiter.api.Test;
-
-/**
- * Unit test for simple App.
- */
-class AppTest {
-
-	/**
-	 * Rigorous Test :-)
-	 */
-	@Test
-	void shouldAnswerWithTrue() {
-		assertTrue(true);
-	}
-}
diff --git a/java2-lab02-db-v3/.gitignore b/java2-lab02-db-v3/.gitignore
deleted file mode 100644
index 98b99a551e28559528e090cbfc676dcff9bd7def..0000000000000000000000000000000000000000
--- a/java2-lab02-db-v3/.gitignore
+++ /dev/null
@@ -1,16 +0,0 @@
-# Eclipse
-.classpath
-.project
-.settings/
- 
-# Intellij
-.idea/
-*.iml
-*.iws
- 
-# Mac
-.DS_Store
- 
-# Maven
-log/
-target/
diff --git a/java2-lab02-db-v3/pom.xml b/java2-lab02-db-v3/pom.xml
deleted file mode 100644
index d3fb125618cbcccf91394ed31e251693838c5fdb..0000000000000000000000000000000000000000
--- a/java2-lab02-db-v3/pom.xml
+++ /dev/null
@@ -1,90 +0,0 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-	<modelVersion>4.0.0</modelVersion>
-	<groupId>cz.vsb.fei.java2</groupId>
-	<artifactId>java2-lab02-db-v3</artifactId>
-	<version>0.0.1-SNAPSHOT</version>
-
-	<name>java2-lab02-db-v3</name>
-
-	<packaging>jar</packaging>
-
-	<properties>
-		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-		<maven.compiler.release>21</maven.compiler.release>
-		<JUnit.version>5.11.0</JUnit.version>
-		<log4j.version>2.23.1</log4j.version>
-		<lombok.version>1.18.34</lombok.version>
-	</properties>
-	<dependencyManagement>
-		<dependencies>
-			<dependency>
-				<groupId>org.junit</groupId>
-				<artifactId>junit-bom</artifactId>
-				<version>${JUnit.version}</version>
-				<type>pom</type>
-				<scope>import</scope>
-			</dependency>
-		</dependencies>
-	</dependencyManagement>
-
-	<dependencies>
-		<dependency>
-			<groupId>cz.vsb.fei.java2</groupId>
-			<artifactId>java2-lab02-common-v3</artifactId>
-			<version>0.0.1-SNAPSHOT</version>
-		</dependency>
-		<dependency>
-			<groupId>com.h2database</groupId>
-			<artifactId>h2</artifactId>
-			<version>2.3.232</version>
-		</dependency>
-
-		<dependency>
-			<groupId>org.junit.jupiter</groupId>
-			<artifactId>junit-jupiter</artifactId>
-			<scope>test</scope>
-		</dependency>
-		<dependency>
-			<groupId>org.apache.logging.log4j</groupId>
-			<artifactId>log4j-core</artifactId>
-			<version>${log4j.version}</version>
-		</dependency>
-		<dependency>
-			<groupId>org.apache.logging.log4j</groupId>
-			<artifactId>log4j-api</artifactId>
-			<version>${log4j.version}</version>
-		</dependency>
-		<dependency>
-			<groupId>org.projectlombok</groupId>
-			<artifactId>lombok</artifactId>
-			<version>${lombok.version}</version>
-			<scope>provided</scope>
-		</dependency>
-	</dependencies>
-
-	<build>
-		<plugins>
-			<plugin>
-				<groupId>org.apache.maven.plugins</groupId>
-				<artifactId>maven-compiler-plugin</artifactId>
-				<version>3.13.0</version>
-				<configuration>
-					<annotationProcessorPaths>
-						<path>
-							<groupId>org.projectlombok</groupId>
-							<artifactId>lombok</artifactId>
-							<version>${lombok.version}</version>
-						</path>
-					</annotationProcessorPaths>
-				</configuration>
-			</plugin>
-			<plugin>
-				<artifactId>maven-surefire-plugin</artifactId>
-				<version>3.5.0</version>
-			</plugin>
-		</plugins>
-	</build>
-
-</project>
diff --git a/java2-lab02-db-v3/src/main/java/module-info.java b/java2-lab02-db-v3/src/main/java/module-info.java
deleted file mode 100644
index b10ea8f1684ce4bf06a27bf5cb036b4515a18ee8..0000000000000000000000000000000000000000
--- a/java2-lab02-db-v3/src/main/java/module-info.java
+++ /dev/null
@@ -1,11 +0,0 @@
-import cz.vsb.fei.java2.lab02.common.ScoreStorageInterface;
-import cz.vsb.fei.java2.lab02.db.DbConnector;
-
-module cz.vsb.fei.java2.lab02.db_module {
-	requires static lombok;
-	requires org.apache.logging.log4j;
-	requires transitive cz.vsb.fei.java2.lab02.common_module;
-	requires java.sql;
-	exports cz.vsb.fei.java2.lab02.db;
-	provides ScoreStorageInterface with cz.vsb.fei.java2.lab02.db.DbConnector;
-}
\ No newline at end of file
diff --git a/java2-lab02-db-v3/src/main/resources/log4j2.xml b/java2-lab02-db-v3/src/main/resources/log4j2.xml
deleted file mode 100644
index acb3514078f6fb73f4f09ffd7a172b47f184e961..0000000000000000000000000000000000000000
--- a/java2-lab02-db-v3/src/main/resources/log4j2.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<Configuration>
-	<Appenders>
-		<Console name="Console">
-			<PatternLayout
-				pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
-		</Console>
-	</Appenders>
-	<Loggers>
-		<Root level="info">
-			<AppenderRef ref="Console"></AppenderRef>
-		</Root>
-	</Loggers>
-</Configuration>
diff --git a/java2-lab02-file-v3/.gitignore b/java2-lab02-file-v3/.gitignore
deleted file mode 100644
index 98b99a551e28559528e090cbfc676dcff9bd7def..0000000000000000000000000000000000000000
--- a/java2-lab02-file-v3/.gitignore
+++ /dev/null
@@ -1,16 +0,0 @@
-# Eclipse
-.classpath
-.project
-.settings/
- 
-# Intellij
-.idea/
-*.iml
-*.iws
- 
-# Mac
-.DS_Store
- 
-# Maven
-log/
-target/
diff --git a/java2-lab02-file-v3/pom.xml b/java2-lab02-file-v3/pom.xml
deleted file mode 100644
index 667061c330b38f8cac9c629918e0cb2c9e27481b..0000000000000000000000000000000000000000
--- a/java2-lab02-file-v3/pom.xml
+++ /dev/null
@@ -1,84 +0,0 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-	<modelVersion>4.0.0</modelVersion>
-	<groupId>cz.vsb.fei.java2</groupId>
-	<artifactId>java2-lab02-file-v3</artifactId>
-	<version>1.0-SNAPSHOT</version>
-
-	<name>java2-lab02-file-v3</name>
-
-	<packaging>jar</packaging>
-
-	<properties>
-		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-		<maven.compiler.release>21</maven.compiler.release>
-		<JUnit.version>5.11.0</JUnit.version>
-		<log4j.version>2.23.1</log4j.version>
-		<lombok.version>1.18.34</lombok.version>
-	</properties>
-	<dependencyManagement>
-		<dependencies>
-			<dependency>
-				<groupId>org.junit</groupId>
-				<artifactId>junit-bom</artifactId>
-				<version>${JUnit.version}</version>
-				<type>pom</type>
-				<scope>import</scope>
-			</dependency>
-		</dependencies>
-	</dependencyManagement>
-
-	<dependencies>
-		<dependency>
-			<groupId>cz.vsb.fei.java2</groupId>
-			<artifactId>java2-lab02-common-v3</artifactId>
-			<version>0.0.1-SNAPSHOT</version>
-		</dependency>
-		<dependency>
-			<groupId>org.junit.jupiter</groupId>
-			<artifactId>junit-jupiter</artifactId>
-			<scope>test</scope>
-		</dependency>
-		<dependency>
-			<groupId>org.apache.logging.log4j</groupId>
-			<artifactId>log4j-core</artifactId>
-			<version>${log4j.version}</version>
-		</dependency>
-		<dependency>
-			<groupId>org.apache.logging.log4j</groupId>
-			<artifactId>log4j-api</artifactId>
-			<version>${log4j.version}</version>
-		</dependency>
-		<dependency>
-			<groupId>org.projectlombok</groupId>
-			<artifactId>lombok</artifactId>
-			<version>${lombok.version}</version>
-			<scope>provided</scope>
-		</dependency>
-	</dependencies>
-
-	<build>
-		<plugins>
-			<plugin>
-				<groupId>org.apache.maven.plugins</groupId>
-				<artifactId>maven-compiler-plugin</artifactId>
-				<version>3.13.0</version>
-				<configuration>
-					<annotationProcessorPaths>
-						<path>
-							<groupId>org.projectlombok</groupId>
-							<artifactId>lombok</artifactId>
-							<version>${lombok.version}</version>
-						</path>
-					</annotationProcessorPaths>
-				</configuration>
-			</plugin>
-			<plugin>
-				<artifactId>maven-surefire-plugin</artifactId>
-				<version>3.5.0</version>
-			</plugin>
-		</plugins>
-	</build>
-
-</project>
diff --git a/java2-lab02-file-v3/src/main/java/module-info.java b/java2-lab02-file-v3/src/main/java/module-info.java
deleted file mode 100644
index cff2f09f3af4cba1cb0d9b11015f44f32c3a0f8a..0000000000000000000000000000000000000000
--- a/java2-lab02-file-v3/src/main/java/module-info.java
+++ /dev/null
@@ -1,9 +0,0 @@
-import cz.vsb.fei.java2.lab02.common.ScoreStorageInterface;
-
-module cz.vsb.fei.file_module {
-	requires static lombok;
-	requires org.apache.logging.log4j;
-    requires transitive cz.vsb.fei.java2.lab02.common_module;
-	exports cz.vsb.fei.file;
-	provides ScoreStorageInterface with cz.vsb.fei.file.FileStorage;
-}
\ No newline at end of file
diff --git a/java2-lab02-v3/.gitignore b/java2-lab02-v3/.gitignore
deleted file mode 100644
index b83d22266ac8aa2f8df2edef68082c789727841d..0000000000000000000000000000000000000000
--- a/java2-lab02-v3/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/target/
diff --git a/java2-lab02-v3/scores.csv b/java2-lab02-v3/scores.csv
deleted file mode 100644
index 290f751b941bbe7cff9b60143e3e6fa74def2d94..0000000000000000000000000000000000000000
--- a/java2-lab02-v3/scores.csv
+++ /dev/null
@@ -1,3 +0,0 @@
-RobotRanger;280
-PixelPioneer;82
-DigitalDynamo;58
diff --git a/java2-lab02-v3/src/main/java/lab/ScoreStorageFactory.java b/java2-lab02-v3/src/main/java/lab/ScoreStorageFactory.java
deleted file mode 100644
index b613d07f62f9d822b12b7f943d596e6e0adfee2f..0000000000000000000000000000000000000000
--- a/java2-lab02-v3/src/main/java/lab/ScoreStorageFactory.java
+++ /dev/null
@@ -1,39 +0,0 @@
-package lab;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.NoSuchElementException;
-import java.util.Random;
-import java.util.ServiceLoader;
-
-import cz.vsb.fei.java2.lab02.common.ScoreStorageInterface;
-import javafx.scene.control.Alert;
-import javafx.scene.control.ButtonType;
-import javafx.stage.Modality;
-import javafx.scene.control.Alert.AlertType;
-
-public class ScoreStorageFactory {
-
-	private static ScoreStorageInterface instance;
-
-	private ScoreStorageFactory() {
-		/* hide public one constructor */
-	}
-
-	public static ScoreStorageInterface getInstance() {
-		if (instance == null) {
-			List<ScoreStorageInterface> availableImplementations = new ArrayList<>();
-			ServiceLoader.load(ScoreStorageInterface.class).forEach(availableImplementations::add);
-			if (availableImplementations.isEmpty()) {
-				throw new NoSuchElementException(
-						"Service loader did not find any implementation of interface ScoreStorageInterface.");
-			}
-			instance = availableImplementations.get(new Random().nextInt(availableImplementations.size()));
-			Alert info = new Alert(AlertType.INFORMATION,
-					String.format("Storage %s selected.", instance.getClass().getName()), ButtonType.OK);
-			info.initModality(Modality.WINDOW_MODAL);
-			info.showAndWait();
-		}
-		return instance;
-	}
-}
diff --git a/java2-lab02-v3/pom.xml b/pom.xml
similarity index 90%
rename from java2-lab02-v3/pom.xml
rename to pom.xml
index b82a9f7eb766124f79573176231631fb0205742f..37f2c2858d4e2b265be88dcdd886625bb171c575 100644
--- a/java2-lab02-v3/pom.xml
+++ b/pom.xml
@@ -3,10 +3,10 @@
 	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
 	<modelVersion>4.0.0</modelVersion>
 	<groupId>cz.vsb.fei.java2</groupId>
-	<artifactId>java2-lab02-v3</artifactId>
+	<artifactId>java2-lab03-v3</artifactId>
 	<version>0.0.1-SNAPHOST</version>
 	<packaging>jar</packaging>
-	<name>java2-lab02-v3</name>
+	<name>java2-lab03-v3</name>
 	<properties>
 		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 		<maven.compiler.source>21</maven.compiler.source>
@@ -14,19 +14,10 @@
 	</properties>
 	<dependencies>
 		<dependency>
-			<groupId>cz.vsb.fei.java2</groupId>
-			<artifactId>java2-lab02-common-v3</artifactId>
-			<version>0.0.1-SNAPSHOT</version>
-		</dependency>
-		<dependency>
-			<groupId>cz.vsb.fei.java2</groupId>
-			<artifactId>java2-lab02-db-v3</artifactId>
-			<version>0.0.1-SNAPSHOT</version>
-		</dependency>
-		<dependency>
-			<groupId>cz.vsb.fei.java2</groupId>
-			<artifactId>java2-lab02-file-v3</artifactId>
-			<version>1.0-SNAPSHOT</version>
+			<groupId>com.h2database</groupId>
+			<artifactId>h2</artifactId>
+			<version>2.3.232</version>
+			<scope>runtime</scope>
 		</dependency>
 
 		<dependency>
diff --git a/src/main/java/lab/Config.java b/src/main/java/lab/Config.java
new file mode 100644
index 0000000000000000000000000000000000000000..8505d32a9f32feeb989fc5fec7758e206e48f629
--- /dev/null
+++ b/src/main/java/lab/Config.java
@@ -0,0 +1,69 @@
+package lab;
+
+import lab.storage.DbConnector;
+import lab.storage.ScoreStorageInterface;
+
+public class Config {
+
+	private static Config instance;
+
+	private ScoreStorageInterface scoreStorageInterface = new DbConnector();
+	private double lochnessMinXPopsition = 0.5;
+	private double lochnessMinYPopsition = 0.5;
+	private double lochnessMinSpeed = 50;
+	private double lochnessMaxSpeed = 150;
+	private int lochnessMultiplier = 1;
+	private double boatCollisionHeight = 0.25;
+	private double boatHitPulseX = 20;
+	private double boatHitPulseYMin = 50;
+	private double boatHitPulseYMax = 100;
+
+	public static void configure(Config setting) {
+		instance = setting;
+	}
+
+	public static Config getInstance() {
+		return instance;
+	}
+
+	public ScoreStorageInterface getScoreStorageInterface() {
+		return scoreStorageInterface;
+	}
+
+	public double getBoatCollisionHeight() {
+		return boatCollisionHeight;
+	}
+
+	public double getBoatHitPulseX() {
+		return boatHitPulseX;
+	}
+
+	public double getBoatHitPulseYMin() {
+		return boatHitPulseYMin;
+	}
+
+	public double getBoatHitPulseYMax() {
+		return boatHitPulseYMax;
+	}
+
+	public int getLochnessMultiplier() {
+		return lochnessMultiplier;
+	}
+
+	public double getLochnessMinXPopsition() {
+		return lochnessMinXPopsition;
+	}
+
+	public double getLochnessMinYPopsition() {
+		return lochnessMinYPopsition;
+	}
+
+	public double getLochnessMinSpeed() {
+		return lochnessMinSpeed;
+	}
+
+	public double getLochnessMaxSpeed() {
+		return lochnessMaxSpeed;
+	}
+
+}
diff --git a/java2-lab02-common-v3/src/main/java/cz/vsb/fei/java2/lab02/common/Score.java b/src/main/java/lab/data/Score.java
similarity index 98%
rename from java2-lab02-common-v3/src/main/java/cz/vsb/fei/java2/lab02/common/Score.java
rename to src/main/java/lab/data/Score.java
index cb962bdf72e3ae81b92bd0e20bd87ff74d9be3f5..01dc746bf946fa4492b77a46a8f80fb85d50d655 100644
--- a/java2-lab02-common-v3/src/main/java/cz/vsb/fei/java2/lab02/common/Score.java
+++ b/src/main/java/lab/data/Score.java
@@ -1,4 +1,4 @@
-package cz.vsb.fei.java2.lab02.common;
+package lab.data;
 
 import java.util.Random;
 
diff --git a/java2-lab02-v3/src/main/java/lab/game/Background.java b/src/main/java/lab/game/Background.java
similarity index 100%
rename from java2-lab02-v3/src/main/java/lab/game/Background.java
rename to src/main/java/lab/game/Background.java
diff --git a/java2-lab02-v3/src/main/java/lab/game/Boat.java b/src/main/java/lab/game/Boat.java
similarity index 54%
rename from java2-lab02-v3/src/main/java/lab/game/Boat.java
rename to src/main/java/lab/game/Boat.java
index a5e088df33c379f2f2ae19109b27f6781f08c126..c16b1ef42c82720877c60c11063892e62be31435 100644
--- a/java2-lab02-v3/src/main/java/lab/game/Boat.java
+++ b/src/main/java/lab/game/Boat.java
@@ -6,6 +6,7 @@ import javafx.geometry.Point2D;
 import javafx.geometry.Rectangle2D;
 import javafx.scene.canvas.GraphicsContext;
 import javafx.scene.image.Image;
+import lab.Config;
 
 public class Boat extends WorldEntity implements Collisionable {
 
@@ -22,7 +23,8 @@ public class Boat extends WorldEntity implements Collisionable {
 	@Override
 	public void drawInternal(GraphicsContext gc) {
 		gc.drawImage(image, position.getX(), position.getY());
-		gc.strokeRect(position.getX(), position.getY(), image.getWidth(), image.getHeight());
+		Rectangle2D rec = getBoundingBox();
+		gc.strokeRect(rec.getMinX(), rec.getMinY(), rec.getWidth(), rec.getHeight());
 	}
 
 	@Override
@@ -33,7 +35,9 @@ public class Boat extends WorldEntity implements Collisionable {
 
 	@Override
 	public Rectangle2D getBoundingBox() {
-		return new Rectangle2D(position.getX(), position.getY(), image.getWidth(), image.getHeight());
+		return new Rectangle2D(position.getX(),
+				position.getY() + image.getHeight() * (1 - Config.getInstance().getBoatCollisionHeight()),
+				image.getWidth(), image.getHeight() * Config.getInstance().getBoatCollisionHeight());
 	}
 
 	@Override
@@ -43,16 +47,19 @@ public class Boat extends WorldEntity implements Collisionable {
 
 	@Override
 	public void hitBy(Collisionable another) {
-		if(another instanceof LochNess lochNess) {
-			int direction = RANDOM.nextBoolean()?-1:1;
-			speed = new Point2D(-20, direction * RANDOM.nextDouble(50, 100));
+		if (another instanceof LochNess lochNess) {
+			int direction = RANDOM.nextBoolean() ? -1 : 1;
+			speed = new Point2D(-Config.getInstance().getBoatHitPulseX(),
+					direction * RANDOM.nextDouble(Config.getInstance().getBoatHitPulseYMin(),
+							Config.getInstance().getBoatHitPulseYMax()));
 		}
 	}
 
 	public void setPosInPercentage(double doubleValue) {
-		position = new Point2D(
-				position.getX(),
-				scene.getSize().getHeight()*doubleValue/100);
+		double colisionHeight = getBoundingBox().getHeight();
+		double posFromBottom = (scene.getSize().getHeight()-colisionHeight)*doubleValue/100;
+		position = new Point2D(position.getX(),
+				(scene.getSize().getHeight()-image.getHeight() -posFromBottom));
 	}
 
 }
diff --git a/java2-lab02-v3/src/main/java/lab/game/Collisionable.java b/src/main/java/lab/game/Collisionable.java
similarity index 100%
rename from java2-lab02-v3/src/main/java/lab/game/Collisionable.java
rename to src/main/java/lab/game/Collisionable.java
diff --git a/java2-lab02-v3/src/main/java/lab/game/DeadListener.java b/src/main/java/lab/game/DeadListener.java
similarity index 100%
rename from java2-lab02-v3/src/main/java/lab/game/DeadListener.java
rename to src/main/java/lab/game/DeadListener.java
diff --git a/java2-lab02-v3/src/main/java/lab/game/Difficult.java b/src/main/java/lab/game/Difficult.java
similarity index 100%
rename from java2-lab02-v3/src/main/java/lab/game/Difficult.java
rename to src/main/java/lab/game/Difficult.java
diff --git a/java2-lab02-v3/src/main/java/lab/game/DrawableSimulable.java b/src/main/java/lab/game/DrawableSimulable.java
similarity index 100%
rename from java2-lab02-v3/src/main/java/lab/game/DrawableSimulable.java
rename to src/main/java/lab/game/DrawableSimulable.java
diff --git a/java2-lab02-v3/src/main/java/lab/game/DrawingThread.java b/src/main/java/lab/game/DrawingThread.java
similarity index 100%
rename from java2-lab02-v3/src/main/java/lab/game/DrawingThread.java
rename to src/main/java/lab/game/DrawingThread.java
diff --git a/java2-lab02-v3/src/main/java/lab/game/LochNess.java b/src/main/java/lab/game/LochNess.java
similarity index 81%
rename from java2-lab02-v3/src/main/java/lab/game/LochNess.java
rename to src/main/java/lab/game/LochNess.java
index 19769fb474e268e2e6f00839c30a8f65553855bb..65ab277bcd68954ccd4ba9c4f911f5873d412e3e 100644
--- a/java2-lab02-v3/src/main/java/lab/game/LochNess.java
+++ b/src/main/java/lab/game/LochNess.java
@@ -9,6 +9,7 @@ import javafx.geometry.Point2D;
 import javafx.geometry.Rectangle2D;
 import javafx.scene.canvas.GraphicsContext;
 import javafx.scene.image.Image;
+import lab.Config;
 
 public class LochNess extends WorldEntity implements Collisionable {
 
@@ -22,9 +23,13 @@ public class LochNess extends WorldEntity implements Collisionable {
 		super(scene, new Point2D(0, 0), 90);
 		this.scene = scene;
 		image = new Image(LochNess.class.getResourceAsStream("LochNess.gif"));
-		position = new Point2D(RANDOM.nextDouble(scene.getSize().getWidth() * 0.3, scene.getSize().getWidth()),
-				RANDOM.nextDouble(scene.getSize().getHeight() * 0.5, scene.getSize().getHeight() - image.getHeight()));
-		speed = new Point2D(-RANDOM.nextDouble(50, 150), 0);
+		position = new Point2D(
+				RANDOM.nextDouble(scene.getSize().getWidth() * Config.getInstance().getLochnessMinXPopsition(),
+						scene.getSize().getWidth()),
+				RANDOM.nextDouble(scene.getSize().getHeight() * Config.getInstance().getLochnessMinYPopsition(),
+						scene.getSize().getHeight() - image.getHeight()));
+		speed = new Point2D(-RANDOM.nextDouble(Config.getInstance().getLochnessMinSpeed(),
+				Config.getInstance().getLochnessMaxSpeed()), 0);
 	}
 
 	@Override
@@ -76,7 +81,7 @@ public class LochNess extends WorldEntity implements Collisionable {
 	public boolean removeDeadListener(DeadListener o) {
 		return deadListeners.remove(o);
 	}
-	
+
 	private void fireLochNessDead() {
 		for (DeadListener deadListener : deadListeners) {
 			deadListener.lochnessDead();
diff --git a/java2-lab02-v3/src/main/java/lab/game/Rock.java b/src/main/java/lab/game/Rock.java
similarity index 100%
rename from java2-lab02-v3/src/main/java/lab/game/Rock.java
rename to src/main/java/lab/game/Rock.java
diff --git a/java2-lab02-v3/src/main/java/lab/game/Routines.java b/src/main/java/lab/game/Routines.java
similarity index 100%
rename from java2-lab02-v3/src/main/java/lab/game/Routines.java
rename to src/main/java/lab/game/Routines.java
diff --git a/java2-lab02-v3/src/main/java/lab/game/Scene.java b/src/main/java/lab/game/Scene.java
similarity index 94%
rename from java2-lab02-v3/src/main/java/lab/game/Scene.java
rename to src/main/java/lab/game/Scene.java
index c81a7960c1cdd0ae57f12f891f43eddbdafa6b9c..ded5e72129c365db9ab96a090953f20c74b36433 100644
--- a/java2-lab02-v3/src/main/java/lab/game/Scene.java
+++ b/src/main/java/lab/game/Scene.java
@@ -7,6 +7,7 @@ import java.util.List;
 import javafx.geometry.Dimension2D;
 import javafx.geometry.Point2D;
 import javafx.scene.canvas.GraphicsContext;
+import lab.Config;
 
 public class Scene {
 
@@ -28,7 +29,7 @@ public class Scene {
 		sceneEntitites.add(background);
 		sceneEntitites.add(rock);
 		sceneEntitites.add(boat);
-		for (int i = 0; i < numberOfMonsters; i++) {
+		for (int i = 0; i < numberOfMonsters * Config.getInstance().getLochnessMultiplier(); i++) {
 			sceneEntitites.add(new LochNess(this));
 		}
 	}
@@ -77,10 +78,11 @@ public class Scene {
 	public Background getBackground() {
 		return background;
 	}
-	
+
 	public void add(DrawableSimulable entity) {
 		entititesToAdd.add(entity);
 	}
+
 	public void remove(DrawableSimulable entity) {
 		entititesToRemove.add(entity);
 	}
diff --git a/java2-lab02-v3/src/main/java/lab/game/WorldEntity.java b/src/main/java/lab/game/WorldEntity.java
similarity index 100%
rename from java2-lab02-v3/src/main/java/lab/game/WorldEntity.java
rename to src/main/java/lab/game/WorldEntity.java
diff --git a/java2-lab02-v3/src/main/java/lab/gui/App.java b/src/main/java/lab/gui/App.java
similarity index 97%
rename from java2-lab02-v3/src/main/java/lab/gui/App.java
rename to src/main/java/lab/gui/App.java
index fe54e7bfeb7cc1fb7d21f0292bf25e6934ffcb2b..62f014e6c0caa6ca94e616d6d5238085a0873ccc 100644
--- a/java2-lab02-v3/src/main/java/lab/gui/App.java
+++ b/src/main/java/lab/gui/App.java
@@ -9,6 +9,7 @@ import javafx.scene.Parent;
 import javafx.scene.Scene;
 import javafx.stage.Stage;
 import javafx.stage.WindowEvent;
+import lab.Config;
 
 /**
  * Class <b>App</b> - extends class Application and it is an entry point of the
@@ -23,6 +24,7 @@ public class App extends Application {
 	private Stage primaryStage;
 	
 	public static void main(String[] args) {
+		Config.configure(new Config());
 		launch(args);
 	}
 
diff --git a/java2-lab02-v3/src/main/java/lab/gui/GameController.java b/src/main/java/lab/gui/GameController.java
similarity index 91%
rename from java2-lab02-v3/src/main/java/lab/gui/GameController.java
rename to src/main/java/lab/gui/GameController.java
index 0669518585ea522d3f6e3e2812318cdce4ed8138..4f68eba29be77fd253ba131e4f244feda556ffca 100644
--- a/java2-lab02-v3/src/main/java/lab/gui/GameController.java
+++ b/src/main/java/lab/gui/GameController.java
@@ -2,7 +2,6 @@ package lab.gui;
 
 import java.util.List;
 
-import cz.vsb.fei.java2.lab02.common.Score;
 import javafx.beans.value.ChangeListener;
 import javafx.beans.value.ObservableValue;
 import javafx.event.ActionEvent;
@@ -13,7 +12,8 @@ import javafx.scene.control.Label;
 import javafx.scene.control.Slider;
 import javafx.scene.control.TableColumn;
 import javafx.scene.control.TableView;
-import lab.ScoreStorageFactory;
+import lab.Config;
+import lab.data.Score;
 import lab.game.DrawingThread;
 import lab.game.LochNess;
 import lab.game.Scene;
@@ -78,17 +78,17 @@ public class GameController {
     void btnGenerateScoreAction(ActionEvent event) {
     	Score score = Score.generate();
     	this.scores.getItems().add(score);
-    	ScoreStorageFactory.getInstance().insertScore(score);
+    	Config.getInstance().getScoreStorageInterface().insertScore(score);
     }
 
     @FXML
     void btnLoadAllAction(ActionEvent event) {
-    	updateScoreTable(ScoreStorageFactory.getInstance().getAll());
+    	updateScoreTable(Config.getInstance().getScoreStorageInterface().getAll());
     }
 
     @FXML
     void btnLoadFirstTenAction(ActionEvent event) {
-    	updateScoreTable(ScoreStorageFactory.getInstance().getFirstTen());
+    	updateScoreTable(Config.getInstance().getScoreStorageInterface().getFirstTen());
     }
     
     private void updateScoreTable(List<Score> scores) {
diff --git a/java2-lab02-v3/src/main/java/lab/gui/MainScreenController.java b/src/main/java/lab/gui/MainScreenController.java
similarity index 84%
rename from java2-lab02-v3/src/main/java/lab/gui/MainScreenController.java
rename to src/main/java/lab/gui/MainScreenController.java
index 277f4ad1f53dfb173c09d1741276b636a20f9b50..15868c4eb1897a2ddd96bf7fe41e36f8cfeb0caf 100644
--- a/java2-lab02-v3/src/main/java/lab/gui/MainScreenController.java
+++ b/src/main/java/lab/gui/MainScreenController.java
@@ -3,7 +3,6 @@ package lab.gui;
 import java.io.IOException;
 import java.util.List;
 
-import cz.vsb.fei.java2.lab02.common.Score;
 import javafx.event.ActionEvent;
 import javafx.fxml.FXML;
 import javafx.scene.control.Button;
@@ -13,7 +12,8 @@ import javafx.scene.control.TextField;
 import javafx.scene.control.ToggleButton;
 import javafx.scene.control.ToggleGroup;
 import javafx.scene.control.cell.PropertyValueFactory;
-import lab.ScoreStorageFactory;
+import lab.Config;
+import lab.data.Score;
 import lab.game.Difficult;
 
 /**
@@ -70,17 +70,17 @@ public class MainScreenController {
 	void btnGenerateScoreAction(ActionEvent event) {
 		Score score = Score.generate();
 		this.scores.getItems().add(score);
-		ScoreStorageFactory.getInstance().insertScore(score);
+		Config.getInstance().getScoreStorageInterface().insertScore(score);
 	}
 
 	@FXML
 	void btnLoadAllAction(ActionEvent event) {
-		updateScoreTable(ScoreStorageFactory.getInstance().getAll());
+		updateScoreTable(Config.getInstance().getScoreStorageInterface().getAll());
 	}
 
 	@FXML
 	void btnLoadFirstTenAction(ActionEvent event) {
-		updateScoreTable(ScoreStorageFactory.getInstance().getFirstTen());
+		updateScoreTable(Config.getInstance().getScoreStorageInterface().getFirstTen());
 	}
 
 	private void updateScoreTable(List<Score> scores) {
@@ -103,8 +103,8 @@ public class MainScreenController {
 	}
 
 	private void initDB() {
-		ScoreStorageFactory.getInstance().init();
-		scores.getItems().addAll(ScoreStorageFactory.getInstance().getAll());
+		Config.getInstance().getScoreStorageInterface().init();
+		scores.getItems().addAll(Config.getInstance().getScoreStorageInterface().getAll());
 	}
 
 }
diff --git a/java2-lab02-db-v3/src/main/java/cz/vsb/fei/java2/lab02/db/DbConnector.java b/src/main/java/lab/storage/DbConnector.java
similarity index 92%
rename from java2-lab02-db-v3/src/main/java/cz/vsb/fei/java2/lab02/db/DbConnector.java
rename to src/main/java/lab/storage/DbConnector.java
index 4f8c076a132951c88211aa4b5739bab926841461..73cbefac399e59111cf39d0bb7271dc9423b5a1c 100644
--- a/java2-lab02-db-v3/src/main/java/cz/vsb/fei/java2/lab02/db/DbConnector.java
+++ b/src/main/java/lab/storage/DbConnector.java
@@ -1,4 +1,4 @@
-package cz.vsb.fei.java2.lab02.db;
+package lab.storage;
 
 import java.sql.Connection;
 import java.sql.DriverManager;
@@ -9,8 +9,8 @@ import java.sql.Statement;
 import java.util.ArrayList;
 import java.util.List;
 
-import cz.vsb.fei.java2.lab02.common.Score;
-import cz.vsb.fei.java2.lab02.common.ScoreStorageInterface;
+import lab.data.Score;
+
 
 public class DbConnector implements ScoreStorageInterface {
 
diff --git a/java2-lab02-file-v3/src/main/java/cz/vsb/fei/file/FileStorage.java b/src/main/java/lab/storage/FileStorage.java
similarity index 91%
rename from java2-lab02-file-v3/src/main/java/cz/vsb/fei/file/FileStorage.java
rename to src/main/java/lab/storage/FileStorage.java
index 291811e791de17b965a9b609bfdbaaf53dad998e..a3228c16a88a3dccaaecda85b3b38a1eb916f46f 100644
--- a/java2-lab02-file-v3/src/main/java/cz/vsb/fei/file/FileStorage.java
+++ b/src/main/java/lab/storage/FileStorage.java
@@ -1,4 +1,4 @@
-package cz.vsb.fei.file;
+package lab.storage;
 
 import java.io.IOException;
 import java.nio.file.Files;
@@ -10,8 +10,7 @@ import java.util.Comparator;
 import java.util.List;
 import java.util.stream.Stream;
 
-import cz.vsb.fei.java2.lab02.common.Score;
-import cz.vsb.fei.java2.lab02.common.ScoreStorageInterface;
+import lab.data.Score;
 
 public class FileStorage implements ScoreStorageInterface {
 
diff --git a/java2-lab02-common-v3/src/main/java/cz/vsb/fei/java2/lab02/common/ScoreStorageInterface.java b/src/main/java/lab/storage/ScoreStorageInterface.java
similarity index 78%
rename from java2-lab02-common-v3/src/main/java/cz/vsb/fei/java2/lab02/common/ScoreStorageInterface.java
rename to src/main/java/lab/storage/ScoreStorageInterface.java
index deb19b3972a81ffa7a3dbc68a512ac96666c4f7c..67ee80d94e2662312f68642b923a0912aa5ae0fc 100644
--- a/java2-lab02-common-v3/src/main/java/cz/vsb/fei/java2/lab02/common/ScoreStorageInterface.java
+++ b/src/main/java/lab/storage/ScoreStorageInterface.java
@@ -1,7 +1,9 @@
-package cz.vsb.fei.java2.lab02.common;
+package lab.storage;
 
 import java.util.List;
 
+import lab.data.Score;
+
 public interface ScoreStorageInterface {
 
 	List<Score> getAll();
diff --git a/java2-lab02-v3/src/main/java/module-info.java b/src/main/java/module-info.java
similarity index 53%
rename from java2-lab02-v3/src/main/java/module-info.java
rename to src/main/java/module-info.java
index 3c2c40525b44b240aa4d87336ce170c826b6f226..07daa1f118ce972c6e6075932e19752e07953324 100644
--- a/java2-lab02-v3/src/main/java/module-info.java
+++ b/src/main/java/module-info.java
@@ -1,11 +1,8 @@
-import cz.vsb.fei.java2.lab02.common.ScoreStorageInterface;
-
-module lab01 {
+module lab02_module {
     requires transitive javafx.controls;
     requires javafx.fxml;
     requires javafx.base;
-	requires cz.vsb.fei.java2.lab02.common_module;
+    requires java.sql;
     opens lab.gui to javafx.fxml;
     exports lab.gui to javafx.fxml,javafx.graphics;
-    uses ScoreStorageInterface;
-}
\ No newline at end of file
+}
diff --git a/java2-lab02-v3/src/main/resources/lab/game/LochNess.gif b/src/main/resources/lab/game/LochNess.gif
similarity index 100%
rename from java2-lab02-v3/src/main/resources/lab/game/LochNess.gif
rename to src/main/resources/lab/game/LochNess.gif
diff --git a/java2-lab02-v3/src/main/resources/lab/game/cityclose400.png b/src/main/resources/lab/game/cityclose400.png
similarity index 100%
rename from java2-lab02-v3/src/main/resources/lab/game/cityclose400.png
rename to src/main/resources/lab/game/cityclose400.png
diff --git a/java2-lab02-v3/src/main/resources/lab/game/cityfar400.png b/src/main/resources/lab/game/cityfar400.png
similarity index 100%
rename from java2-lab02-v3/src/main/resources/lab/game/cityfar400.png
rename to src/main/resources/lab/game/cityfar400.png
diff --git a/java2-lab02-v3/src/main/resources/lab/game/citymid400.png b/src/main/resources/lab/game/citymid400.png
similarity index 100%
rename from java2-lab02-v3/src/main/resources/lab/game/citymid400.png
rename to src/main/resources/lab/game/citymid400.png
diff --git a/java2-lab02-v3/src/main/resources/lab/game/cityreflection400.png b/src/main/resources/lab/game/cityreflection400.png
similarity index 100%
rename from java2-lab02-v3/src/main/resources/lab/game/cityreflection400.png
rename to src/main/resources/lab/game/cityreflection400.png
diff --git a/java2-lab02-v3/src/main/resources/lab/game/ship-boat.gif b/src/main/resources/lab/game/ship-boat.gif
similarity index 100%
rename from java2-lab02-v3/src/main/resources/lab/game/ship-boat.gif
rename to src/main/resources/lab/game/ship-boat.gif
diff --git a/java2-lab02-v3/src/main/resources/lab/gui/application.css b/src/main/resources/lab/gui/application.css
similarity index 100%
rename from java2-lab02-v3/src/main/resources/lab/gui/application.css
rename to src/main/resources/lab/gui/application.css
diff --git a/java2-lab02-v3/src/main/resources/lab/gui/gameWindow.fxml b/src/main/resources/lab/gui/gameWindow.fxml
similarity index 95%
rename from java2-lab02-v3/src/main/resources/lab/gui/gameWindow.fxml
rename to src/main/resources/lab/gui/gameWindow.fxml
index 726893537e6ee445bac73b8fb086c9aaf82bc738..c5b26e10d7bfef41843c765cf29ce8da895409df 100644
--- a/java2-lab02-v3/src/main/resources/lab/gui/gameWindow.fxml
+++ b/src/main/resources/lab/gui/gameWindow.fxml
@@ -40,7 +40,7 @@
       </Canvas>
    </center>
    <left>
-      <Slider fx:id="boatPosition" blockIncrement="5.0" majorTickUnit="10.0" max="80.0" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" min="20.0" minorTickCount="5" orientation="VERTICAL" prefHeight="331.0" prefWidth="38.0" showTickLabels="true" showTickMarks="true" BorderPane.alignment="CENTER" />
+      <Slider fx:id="boatPosition" blockIncrement="5.0" majorTickUnit="10.0" max="100.0" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" min="0.0" minorTickCount="5" orientation="VERTICAL" prefHeight="331.0" prefWidth="38.0" showTickLabels="true" showTickMarks="true" BorderPane.alignment="CENTER" />
    </left>
    <top>
       <Label fx:id="playerName" text="Label" BorderPane.alignment="CENTER" />
diff --git a/java2-lab02-v3/src/main/resources/lab/gui/lochness-background.jpg b/src/main/resources/lab/gui/lochness-background.jpg
similarity index 100%
rename from java2-lab02-v3/src/main/resources/lab/gui/lochness-background.jpg
rename to src/main/resources/lab/gui/lochness-background.jpg
diff --git a/java2-lab02-v3/src/main/resources/lab/gui/mainScreen.fxml b/src/main/resources/lab/gui/mainScreen.fxml
similarity index 100%
rename from java2-lab02-v3/src/main/resources/lab/gui/mainScreen.fxml
rename to src/main/resources/lab/gui/mainScreen.fxml
diff --git a/java2-lab02-v3/src/test/java/jez04/structure/test/ClassStructureTest.java b/src/test/java/jez04/structure/test/ClassStructureTest.java
similarity index 100%
rename from java2-lab02-v3/src/test/java/jez04/structure/test/ClassStructureTest.java
rename to src/test/java/jez04/structure/test/ClassStructureTest.java
diff --git a/java2-lab02-v3/src/test/java/jez04/structure/test/StructureHelper.java b/src/test/java/jez04/structure/test/StructureHelper.java
similarity index 100%
rename from java2-lab02-v3/src/test/java/jez04/structure/test/StructureHelper.java
rename to src/test/java/jez04/structure/test/StructureHelper.java