diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index d2afdf450283be6216b80b7634470d3f6aea5aab..bdcd9247979eb6b66b596041220588f4ca026285 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,35 +1,18 @@
-stages:
-  - build
-  - test
+image: maven:latest
 
 build:
   stage: build
   script:
-    - cd src/application
-    - mkdir testi
-    - cd testi
-    - touch teksti.txt
-  artifacts:
-    paths:
-      - src/application/
-      - src/application/testi/
+    - mvn compile
 
-test-1:
+test:
   stage: test
   script:
-    - cd src/application/testi/
-    - test -f teksti.txt
-    - cat teksti.txt
+    - mvn test
 
-test-2:
-  stage: test
-  script:
-    - cd src/application/
-    - test -f Main.java
-    - cat Main.java
-
-test-3:
-  stage: test
+deploy:
+  stage: deploy
   script:
-    - sleep 5
-    - ls
+    - mvn deploy
+  only:
+    - master
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000000000000000000000000000000000000..c7e61d0ad4aefaf83dc234dbf53e260870b95e20
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,72 @@
+<project>
+
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>fi.utu.tech</groupId>
+  <artifactId>spaceinvaders</artifactId>
+  <version>1</version>
+
+  <properties>
+  <junit.version>5.7.1</junit.version>
+  <junitplatform.version>1.7.1</junitplatform.version>
+  <jqwik.version>1.5.0</jqwik.version>
+  <maven.compiler.source>1.8</maven.compiler.source>
+  <maven.compiler.target>1.8</maven.compiler.target>
+  </properties>
+
+  <dependencies>
+  <dependency>
+    <groupId>org.junit.jupiter</groupId>
+    <artifactId>junit-jupiter-api</artifactId>
+    <version>${junit.version}</version>
+    <scope>test</scope>
+  </dependency>
+  <dependency>
+    <groupId>org.junit.jupiter</groupId>
+    <artifactId>junit-jupiter-engine</artifactId>
+    <version>${junit.version}</version>
+    <scope>test</scope>
+  </dependency>
+  <dependency>
+    <groupId>org.junit.jupiter</groupId>
+    <artifactId>junit-jupiter-params</artifactId>
+    <version>${junit.version}</version>
+    <scope>test</scope>
+  </dependency>
+  <dependency>
+    <groupId>org.junit.platform</groupId>
+    <artifactId>junit-platform-commons</artifactId>
+    <version>${junitplatform.version}</version>
+    <scope>test</scope>
+  </dependency>
+  <dependency>
+    <groupId>net.jqwik</groupId>
+    <artifactId>jqwik</artifactId>
+    <version>${jqwik.version}</version>
+    <scope>test</scope>
+  </dependency>
+  <dependency>
+    <groupId>org.openjfx</groupId>
+    <artifactId>javafx-controls</artifactId>
+    <version>17</version>
+  </dependency>
+  <dependency>
+    <groupId>org.openjfx</groupId>
+    <artifactId>javafx-media</artifactId>
+    <version>17</version>
+  </dependency>
+
+  </dependencies>
+  
+  <build>
+    <plugins>
+        <plugin>
+          <artifactId>maven-surefire-plugin</artifactId>
+           <version>3.0.0-M5</version>
+        </plugin>
+        <plugin>
+           <artifactId>maven-failsafe-plugin</artifactId>
+          <version>3.0.0-M5</version>
+        </plugin>
+    </plugins>
+  </build>
+</project>
diff --git a/src/application/Main.java b/src/main/java/fi/utu/tech/Main.java
similarity index 99%
rename from src/application/Main.java
rename to src/main/java/fi/utu/tech/Main.java
index 42a3aa6061c9f59c3f2737aecf00430f6cedf46f..601295c3767342ef794d8f55a27bfddeffe01067 100644
--- a/src/application/Main.java
+++ b/src/main/java/fi/utu/tech/Main.java
@@ -1,4 +1,4 @@
-package application;
+package fi.utu.tech;
 
 import java.io.BufferedReader;
 import java.io.BufferedWriter;
diff --git a/src/application/application.css b/src/main/resources/application.css
similarity index 100%
rename from src/application/application.css
rename to src/main/resources/application.css
diff --git a/images/barrier1.png b/src/main/resources/images/barrier1.png
similarity index 100%
rename from images/barrier1.png
rename to src/main/resources/images/barrier1.png
diff --git a/images/barrier2.png b/src/main/resources/images/barrier2.png
similarity index 100%
rename from images/barrier2.png
rename to src/main/resources/images/barrier2.png
diff --git a/images/barrier3.png b/src/main/resources/images/barrier3.png
similarity index 100%
rename from images/barrier3.png
rename to src/main/resources/images/barrier3.png
diff --git a/images/barrier4.png b/src/main/resources/images/barrier4.png
similarity index 100%
rename from images/barrier4.png
rename to src/main/resources/images/barrier4.png
diff --git a/images/barrier5.png b/src/main/resources/images/barrier5.png
similarity index 100%
rename from images/barrier5.png
rename to src/main/resources/images/barrier5.png
diff --git a/images/barrier6.png b/src/main/resources/images/barrier6.png
similarity index 100%
rename from images/barrier6.png
rename to src/main/resources/images/barrier6.png
diff --git a/images/bullet.png b/src/main/resources/images/bullet.png
similarity index 100%
rename from images/bullet.png
rename to src/main/resources/images/bullet.png
diff --git a/images/explosion.png b/src/main/resources/images/explosion.png
similarity index 100%
rename from images/explosion.png
rename to src/main/resources/images/explosion.png
diff --git a/images/gameover.png b/src/main/resources/images/gameover.png
similarity index 100%
rename from images/gameover.png
rename to src/main/resources/images/gameover.png
diff --git a/images/invader1.png b/src/main/resources/images/invader1.png
similarity index 100%
rename from images/invader1.png
rename to src/main/resources/images/invader1.png
diff --git a/images/invader2.png b/src/main/resources/images/invader2.png
similarity index 100%
rename from images/invader2.png
rename to src/main/resources/images/invader2.png
diff --git a/images/invader3.png b/src/main/resources/images/invader3.png
similarity index 100%
rename from images/invader3.png
rename to src/main/resources/images/invader3.png
diff --git a/images/life.png b/src/main/resources/images/life.png
similarity index 100%
rename from images/life.png
rename to src/main/resources/images/life.png
diff --git a/images/player.png b/src/main/resources/images/player.png
similarity index 100%
rename from images/player.png
rename to src/main/resources/images/player.png
diff --git a/soundeffects/.gitkeep b/src/main/resources/soundeffects/.gitkeep
similarity index 100%
rename from soundeffects/.gitkeep
rename to src/main/resources/soundeffects/.gitkeep
diff --git a/soundeffects/explosion.wav b/src/main/resources/soundeffects/explosion.wav
similarity index 100%
rename from soundeffects/explosion.wav
rename to src/main/resources/soundeffects/explosion.wav
diff --git a/soundeffects/healthpickup.wav b/src/main/resources/soundeffects/healthpickup.wav
similarity index 100%
rename from soundeffects/healthpickup.wav
rename to src/main/resources/soundeffects/healthpickup.wav
diff --git a/soundeffects/invaderkilled.wav b/src/main/resources/soundeffects/invaderkilled.wav
similarity index 100%
rename from soundeffects/invaderkilled.wav
rename to src/main/resources/soundeffects/invaderkilled.wav
diff --git a/soundeffects/shoot.wav b/src/main/resources/soundeffects/shoot.wav
similarity index 100%
rename from soundeffects/shoot.wav
rename to src/main/resources/soundeffects/shoot.wav
diff --git a/soundeffects/spaceInvadersRemix.wav b/src/main/resources/soundeffects/spaceInvadersRemix.wav
similarity index 100%
rename from soundeffects/spaceInvadersRemix.wav
rename to src/main/resources/soundeffects/spaceInvadersRemix.wav