diff --git a/.gitignore b/.gitignore
index 56bcd5b8b434cd3c0a3e8f8b516f1b56c965f2c1..469b1d105706fbc23a902b4fa7c4bbef949d0ce2 100644
--- a/.gitignore
+++ b/.gitignore
@@ -7,4 +7,5 @@ build/
 *.bkp
 *.out
 .classpath
-/.gradle/
+.gradle/
+buildCmake/
diff --git a/.gradle/4.7/fileChanges/last-build.bin b/.gradle/4.7/fileChanges/last-build.bin
deleted file mode 100644
index f76dd238ade08917e6712764a16a22005a50573d..0000000000000000000000000000000000000000
Binary files a/.gradle/4.7/fileChanges/last-build.bin and /dev/null differ
diff --git a/.gradle/4.7/fileHashes/fileHashes.bin b/.gradle/4.7/fileHashes/fileHashes.bin
deleted file mode 100644
index cf5cd21555901c821d3e3937a49e6f7db09d713e..0000000000000000000000000000000000000000
Binary files a/.gradle/4.7/fileHashes/fileHashes.bin and /dev/null differ
diff --git a/.gradle/4.7/fileHashes/fileHashes.lock b/.gradle/4.7/fileHashes/fileHashes.lock
deleted file mode 100644
index e507b952a87e5dbe44d700c593bf33da89c5823c..0000000000000000000000000000000000000000
Binary files a/.gradle/4.7/fileHashes/fileHashes.lock and /dev/null differ
diff --git a/.gradle/4.7/taskHistory/taskHistory.bin b/.gradle/4.7/taskHistory/taskHistory.bin
deleted file mode 100644
index 36d176c25546d99e901c432ebfc25a1a6aee6a86..0000000000000000000000000000000000000000
Binary files a/.gradle/4.7/taskHistory/taskHistory.bin and /dev/null differ
diff --git a/.gradle/4.7/taskHistory/taskHistory.lock b/.gradle/4.7/taskHistory/taskHistory.lock
deleted file mode 100644
index be1f2aa9426d225b547fcecea22208d00f8824b2..0000000000000000000000000000000000000000
Binary files a/.gradle/4.7/taskHistory/taskHistory.lock and /dev/null differ
diff --git a/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/.gradle/buildOutputCleanup/buildOutputCleanup.lock
deleted file mode 100644
index dc90c13fbc01bd2630f7c7d55d843bb2e9147b42..0000000000000000000000000000000000000000
Binary files a/.gradle/buildOutputCleanup/buildOutputCleanup.lock and /dev/null differ
diff --git a/.gradle/buildOutputCleanup/cache.properties b/.gradle/buildOutputCleanup/cache.properties
deleted file mode 100644
index f645da0fe731fd2a7ede436975db8064febc798b..0000000000000000000000000000000000000000
--- a/.gradle/buildOutputCleanup/cache.properties
+++ /dev/null
@@ -1,2 +0,0 @@
-#Wed Jun 20 13:48:55 CEST 2018
-gradle.version=4.7
diff --git a/.gradle/buildOutputCleanup/outputFiles.bin b/.gradle/buildOutputCleanup/outputFiles.bin
deleted file mode 100644
index cb8236e705283786c1128912b1dc58517210d9ba..0000000000000000000000000000000000000000
Binary files a/.gradle/buildOutputCleanup/outputFiles.bin and /dev/null differ
diff --git a/.gradle/vcsWorkingDirs/gc.properties b/.gradle/vcsWorkingDirs/gc.properties
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/build.gradle b/build.gradle
index 20822aa54b879908f38b7a81ae69b14742009bbc..44bee3065209f0773a8f31f8dc213b351a9f8e0f 100644
--- a/build.gradle
+++ b/build.gradle
@@ -9,7 +9,7 @@ jacoco {
 
 version = '1.0.0'
 applicationName = "ImmutableComplex"
-mainClassName = "Main"
+mainClassName = "main.java.Main"
 
 repositories {
 	jcenter()
@@ -19,6 +19,20 @@ dependencies {
 	testCompile "junit:junit:4+"
 }
 
+// Here sourceSets is redundant as these are the default gradle paths
+sourceSets{
+	main {
+		java {
+			srcDir 'src/main/java'
+		}
+	}
+	test {
+		java {
+			srcDir 'src/main/tests'
+		}
+	}
+}
+
 // Specify the jar manifest to make it executable
 jar {
 	manifest {
@@ -37,5 +51,6 @@ jacocoTestReport {
     }
 }
 
+// Finalize test task with jacocoTestReport function
 test.finalizedBy(jacocoTestReport)
 
diff --git a/src/main/CMakeLists.txt b/src/main/CMakeLists.txt
index f8b0b5c2181d0578845c8859d86445a3f45ea4b7..a9fab795dc9de9f95f795960696b9030170038d5 100644
--- a/src/main/CMakeLists.txt
+++ b/src/main/CMakeLists.txt
@@ -5,7 +5,7 @@ set(CMAKE_JAVA_TARGET_OUTPUT_NAME immutablecomplex-${IMMCOMPLX_VERSION})
 
 # Compile the source files into a jar with a main
 add_jar(immutablecomplex java/Complex.java java/Main.java 
-ENTRY_POINT main.java.Main
+ENTRY_POINT main/java/Main
 VERSION ${IMMCOMPLX_VERSION})
 
 # Get the jar location
diff --git a/src/main/java/Complex.java b/src/main/java/Complex.java
index 79513a9eac88dc7f5ac99d6e8cb0ae7fd487d4f7..2fba60c4c377d5cc315cd1fe1a5c3aec248e4d34 100644
--- a/src/main/java/Complex.java
+++ b/src/main/java/Complex.java
@@ -1,7 +1,7 @@
 /**
  * Complex class file
  */
-
+package main.java;
 
 
 /**
diff --git a/src/main/java/Main.java b/src/main/java/Main.java
index c136f755b583d4534e422d05afe1e627d6c9b7c3..3a5abfcdac5abda4b4a80e4ffa6b1c0dd3fdd98c 100644
--- a/src/main/java/Main.java
+++ b/src/main/java/Main.java
@@ -1,3 +1,4 @@
+package main.java;
 
 public class Main {
 
diff --git a/src/test/java/ComplexTest.java b/src/test/java/ComplexTest.java
index 4a8be9e998f19b65004117ee92c931a1726fee7a..03bf55cf9fa5324270b0a0432ba4017aaffc88ca 100644
--- a/src/test/java/ComplexTest.java
+++ b/src/test/java/ComplexTest.java
@@ -1,6 +1,7 @@
 /**
  * Test file for Complex class
  */
+package test.java;
 
 import org.junit.Assert;
 
@@ -10,6 +11,8 @@ import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 
+import main.java.Complex;
+
 /**
  * Junit test case for my immutable complex class.
  * @author arrivault