diff --git a/.classpath b/.classpath
index fff3d8eecea29a77a735c994290a8cfaaf1b1674..8e795b1c7e0c65a33e55e6a4fe23c4a11dd9e703 100644
--- a/.classpath
+++ b/.classpath
@@ -1,11 +1,36 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <classpath>
-	<classpathentry excluding="core/CreateMe.java|core/CurrentWork.java|userInterface/CopyOfUserInterfaceController.java|userInterface/Save.java" kind="src" path="src"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/controlsfx"/>
-	<classpathentry combineaccessrules="false" kind="src" path="/_Tools"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/SQLite"/>
-	<classpathentry combineaccessrules="false" kind="src" path="/JSON"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/GSON"/>
-	<classpathentry kind="output" path="class"/>
+	<classpathentry kind="src" output="target/classes" path="src/main/java">
+		<attributes>
+			<attribute name="optional" value="true"/>
+			<attribute name="maven.pomderived" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources">
+		<attributes>
+			<attribute name="maven.pomderived" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="src" output="target/test-classes" path="src/test/java">
+		<attributes>
+			<attribute name="optional" value="true"/>
+			<attribute name="maven.pomderived" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry excluding="**" kind="src" output="target/test-classes" path="src/test/resources">
+		<attributes>
+			<attribute name="maven.pomderived" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER">
+		<attributes>
+			<attribute name="maven.pomderived" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
+		<attributes>
+			<attribute name="maven.pomderived" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="output" path="target/classes"/>
 </classpath>
diff --git a/.gitignore b/.gitignore
index efdffc77467e4762e0c9b8440c75ff498fd03b58..4b882c99e99977b6f857f67a5ea3afbb4e7509bc 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1,5 @@
-class/
\ No newline at end of file
+class/
+bin/
+target/
+
+build/[0-9]*.[0-9]*.[0-9]*
\ No newline at end of file
diff --git a/.project b/.project
index c6c730111e9d69a3e961ea38fb1fc00a15a0de5c..5df00f1a09794f4cee36739a3470e98ff5c90f82 100644
--- a/.project
+++ b/.project
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <projectDescription>
-	<name>SmartTime-v5.0</name>
+	<name>SmartTime</name>
 	<comment></comment>
 	<projects>
 	</projects>
@@ -11,13 +11,13 @@
 			</arguments>
 		</buildCommand>
 		<buildCommand>
-			<name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+			<name>org.eclipse.m2e.core.maven2Builder</name>
 			<arguments>
 			</arguments>
 		</buildCommand>
 	</buildSpec>
 	<natures>
-		<nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
 		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.m2e.core.maven2Nature</nature>
 	</natures>
 </projectDescription>
diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs
index a698e59674fc5acbc59d9c75892963a0115b7c26..13b3428acd87c3f94042e61eed221c15ce682bfa 100644
--- a/.settings/org.eclipse.jdt.core.prefs
+++ b/.settings/org.eclipse.jdt.core.prefs
@@ -9,4 +9,5 @@ org.eclipse.jdt.core.compiler.debug.localVariable=generate
 org.eclipse.jdt.core.compiler.debug.sourceFile=generate
 org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
 org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
 org.eclipse.jdt.core.compiler.source=1.8
diff --git a/.settings/org.eclipse.m2e.core.prefs b/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000000000000000000000000000000000000..f897a7f1cb2389f85fe6381425d29f0a9866fb65
--- /dev/null
+++ b/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
diff --git a/build.fxbuild b/build.fxbuild
deleted file mode 100644
index f21c65c33c7392224c1d64cc68f3247b0ace3cb5..0000000000000000000000000000000000000000
--- a/build.fxbuild
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="ASCII"?>
-<anttasks:AntTask xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:anttasks="http://org.eclipse.fx.ide.dt/1.0" buildDirectory="C:\Program Files\Java\re1.8.0_25">
-  <deploy>
-    <application name="JavaFX" mainclass="userInterface." version="3.3.0" toolkit="fx"/>
-    <info title="test.SmartTime" vendor="Robert Goldmann"/>
-  </deploy>
-  <signar/>
-</anttasks:AntTask>
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000000000000000000000000000000000000..380ed970e82db5cfce1fddb96e0498f2f957db42
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,94 @@
+<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/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>de.deadlocker8</groupId>
+  <artifactId>SmartTime</artifactId>
+  <version>5.2.0</version>
+  <build>
+		<plugins>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-compiler-plugin</artifactId>
+				<version>3.7.0</version>
+				<configuration>
+					<source>1.8</source>
+					<target>1.8</target>
+				</configuration>
+			</plugin>			
+			<plugin>
+				<artifactId>maven-assembly-plugin</artifactId>
+				<configuration>
+					<outputDirectory>build/${project.version}</outputDirectory>
+					<finalName>SmartTime-v${project.version}</finalName>
+					<appendAssemblyId>false</appendAssemblyId>
+					<archive>
+						<manifest>
+							<mainClass>de.deadlocker8.smarttime.main.Main</mainClass>
+						</manifest>
+					</archive>
+					<descriptorRefs>
+						<descriptorRef>jar-with-dependencies</descriptorRef>
+					</descriptorRefs>
+				</configuration>
+				<executions>
+					<execution>
+						<id>make-assembly</id> <!-- this is used for inheritance merges -->
+						<phase>package</phase> <!-- bind to the packaging phase -->
+						<goals>
+							<goal>single</goal>
+						</goals>
+					</execution>
+				</executions>
+			</plugin>
+			<!-- LAUNCH4J -->
+			<plugin>
+				<groupId>com.akathist.maven.plugins.launch4j</groupId>
+				<artifactId>launch4j-maven-plugin</artifactId>
+				<version>1.7.21</version>
+				<executions>
+					<execution>
+						<id>l4j-clui</id>
+						<phase>package</phase>
+						<goals>
+							<goal>launch4j</goal>
+						</goals>
+						<configuration>
+							<headerType>gui</headerType>
+							<jar>build/${project.version}/SmartTime-v${project.version}.jar</jar>
+							<outfile>build/${project.version}/SmartTime-v${project.version}.exe</outfile>
+							<downloadUrl>http://java.com/download</downloadUrl>
+							<classPath>
+								<mainClass>de.deadlocker8.smarttime.main.Main</mainClass>
+							</classPath>
+							<jre>
+								<bundledJre64Bit>false</bundledJre64Bit>
+								<bundledJreAsFallback>false</bundledJreAsFallback>
+								<minVersion>1.8.0</minVersion>
+								<jdkPreference>preferJre</jdkPreference>
+								<runtimeBits>64/32</runtimeBits>
+							</jre>
+							<icon>build/Icon.ico</icon>
+						</configuration>
+					</execution>
+				</executions>
+			</plugin>
+		</plugins>
+	</build>
+
+	<dependencies>	
+		<dependency>
+			<groupId>de.deadlocker8</groupId>
+			<artifactId>tools</artifactId>
+			<version>1.0.0</version>
+		</dependency>
+		<dependency>
+			<groupId>com.google.code.gson</groupId>
+			<artifactId>gson</artifactId>
+			<version>2.8.1</version>
+		</dependency>
+		<dependency>
+			<groupId>org.xerial</groupId>
+			<artifactId>sqlite-jdbc</artifactId>
+			<version>3.21.0</version>
+		</dependency>
+	</dependencies>
+</project>
\ No newline at end of file
diff --git a/src/charts/BarChartGenerator.java b/src/main/java/de/deadlocker8/smarttime/charts/BarChartGenerator.java
similarity index 94%
rename from src/charts/BarChartGenerator.java
rename to src/main/java/de/deadlocker8/smarttime/charts/BarChartGenerator.java
index 62ba6806e282725a5b3cbe79c19677261707da0b..753d0c21713137ac2664865bdcc9b385a6cb5f38 100644
--- a/src/charts/BarChartGenerator.java
+++ b/src/main/java/de/deadlocker8/smarttime/charts/BarChartGenerator.java
@@ -1,8 +1,11 @@
-package charts;
+package de.deadlocker8.smarttime.charts;
 
 import java.util.ArrayList;
 import java.util.Calendar;
 
+import de.deadlocker8.smarttime.core.LogObject;
+import de.deadlocker8.smarttime.core.SQL;
+import de.deadlocker8.smarttime.core.Utils;
 import javafx.geometry.Point2D;
 import javafx.scene.Node;
 import javafx.event.*;
@@ -14,9 +17,6 @@ import javafx.scene.chart.XYChart.Data;
 import javafx.scene.chart.XYChart.Series;
 import javafx.scene.control.Tooltip;
 import javafx.scene.input.MouseEvent;
-import core.LogObject;
-import core.SQL;
-import core.Utils;
 
 public class BarChartGenerator
 {
diff --git a/src/charts/ChartGUIController.java b/src/main/java/de/deadlocker8/smarttime/charts/ChartGUIController.java
similarity index 98%
rename from src/charts/ChartGUIController.java
rename to src/main/java/de/deadlocker8/smarttime/charts/ChartGUIController.java
index 0395293ddd2d5a4d189fa3670767e3ee155a45f6..2333e2448e7d5c70e6c32ea01a652296ff139b1f 100644
--- a/src/charts/ChartGUIController.java
+++ b/src/main/java/de/deadlocker8/smarttime/charts/ChartGUIController.java
@@ -1,13 +1,13 @@
-package charts;
+package de.deadlocker8.smarttime.charts;
 
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashSet;
 
-import core.LogObject;
-import core.SQL;
-import core.Settings;
-import core.Utils;
+import de.deadlocker8.smarttime.core.LogObject;
+import de.deadlocker8.smarttime.core.SQL;
+import de.deadlocker8.smarttime.core.Settings;
+import de.deadlocker8.smarttime.core.Utils;
 import javafx.beans.value.ChangeListener;
 import javafx.beans.value.ObservableValue;
 import javafx.fxml.FXML;
diff --git a/src/charts/PieChartGenerator.java b/src/main/java/de/deadlocker8/smarttime/charts/PieChartGenerator.java
similarity index 97%
rename from src/charts/PieChartGenerator.java
rename to src/main/java/de/deadlocker8/smarttime/charts/PieChartGenerator.java
index ec9f4f308cb96efa3b0c2cd4d344c3aeb626dc3f..fea7b62c1b4aee2c0eab163408de19d4f94c547a 100644
--- a/src/charts/PieChartGenerator.java
+++ b/src/main/java/de/deadlocker8/smarttime/charts/PieChartGenerator.java
@@ -1,8 +1,10 @@
-package charts;
+package de.deadlocker8.smarttime.charts;
 
 import java.util.ArrayList;
 import java.util.HashSet;
 
+import de.deadlocker8.smarttime.core.LogObject;
+import de.deadlocker8.smarttime.core.SQL;
 import javafx.collections.FXCollections;
 import javafx.collections.ObservableList;
 import javafx.event.EventHandler;
@@ -12,8 +14,6 @@ import javafx.scene.chart.PieChart;
 import javafx.scene.control.Tooltip;
 import javafx.scene.input.MouseEvent;
 import tools.ConvertTo;
-import core.LogObject;
-import core.SQL;
 
 public class PieChartGenerator
 {
diff --git a/src/charts/SummaryGenerator.java b/src/main/java/de/deadlocker8/smarttime/charts/SummaryGenerator.java
similarity index 96%
rename from src/charts/SummaryGenerator.java
rename to src/main/java/de/deadlocker8/smarttime/charts/SummaryGenerator.java
index 91af6a918bece54363da32b3899d69e6e713d447..0d6ee9b3b92dd96dd37f1834fcfcf488b495078a 100644
--- a/src/charts/SummaryGenerator.java
+++ b/src/main/java/de/deadlocker8/smarttime/charts/SummaryGenerator.java
@@ -1,10 +1,10 @@
-package charts;
+package de.deadlocker8.smarttime.charts;
 
 import java.util.ArrayList;
 import java.util.HashSet;
 
-import core.LogObject;
-import core.SQL;
+import de.deadlocker8.smarttime.core.LogObject;
+import de.deadlocker8.smarttime.core.SQL;
 import javafx.geometry.Insets;
 import javafx.geometry.Pos;
 import javafx.scene.control.Label;
diff --git a/src/userInterface/EditController.java b/src/main/java/de/deadlocker8/smarttime/controller/EditController.java
similarity index 93%
rename from src/userInterface/EditController.java
rename to src/main/java/de/deadlocker8/smarttime/controller/EditController.java
index 27ad81bfeed5aebc42be6bd37850b9fa9a869c7d..032d0cca5ae582e53fa8dc9c476cdf90b695248e 100644
--- a/src/userInterface/EditController.java
+++ b/src/main/java/de/deadlocker8/smarttime/controller/EditController.java
@@ -1,13 +1,13 @@
-package userInterface;
+package de.deadlocker8.smarttime.controller;
 
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Optional;
 
-import core.LogObject;
-import core.SQL;
-import core.Settings;
-import core.Utils;
+import de.deadlocker8.smarttime.core.LogObject;
+import de.deadlocker8.smarttime.core.SQL;
+import de.deadlocker8.smarttime.core.Settings;
+import de.deadlocker8.smarttime.core.Utils;
 import javafx.beans.value.ChangeListener;
 import javafx.beans.value.ObservableValue;
 import javafx.event.ActionEvent;
diff --git a/src/userInterface/InsertTimeController.java b/src/main/java/de/deadlocker8/smarttime/controller/InsertTimeController.java
similarity index 98%
rename from src/userInterface/InsertTimeController.java
rename to src/main/java/de/deadlocker8/smarttime/controller/InsertTimeController.java
index 0142eb676c314c1ed1f5c0ea4ba8a2a5e5766afb..08be28641e427d171f535fe244226186f1bc0356 100644
--- a/src/userInterface/InsertTimeController.java
+++ b/src/main/java/de/deadlocker8/smarttime/controller/InsertTimeController.java
@@ -1,4 +1,4 @@
-package userInterface;
+package de.deadlocker8.smarttime.controller;
 
 import java.sql.Timestamp;
 import java.text.DateFormat;
@@ -12,10 +12,10 @@ import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Date;
 
-import core.LogObject;
-import core.SQL;
-import core.Settings;
-import core.Utils;
+import de.deadlocker8.smarttime.core.LogObject;
+import de.deadlocker8.smarttime.core.SQL;
+import de.deadlocker8.smarttime.core.Settings;
+import de.deadlocker8.smarttime.core.Utils;
 import fontAwesome.FontIcon;
 import fontAwesome.FontIconType;
 import javafx.beans.value.ChangeListener;
diff --git a/src/userInterface/ProjektFensterController.java b/src/main/java/de/deadlocker8/smarttime/controller/ProjektFensterController.java
similarity index 94%
rename from src/userInterface/ProjektFensterController.java
rename to src/main/java/de/deadlocker8/smarttime/controller/ProjektFensterController.java
index ca02d1dbfb83e0e0afdaceb9c992a35e6bc5b7c2..a38c4f6850ad3c244ddfc5458bf43edb8b033e1e 100644
--- a/src/userInterface/ProjektFensterController.java
+++ b/src/main/java/de/deadlocker8/smarttime/controller/ProjektFensterController.java
@@ -1,11 +1,11 @@
-package userInterface;
+package de.deadlocker8.smarttime.controller;
 
 import java.util.ArrayList;
 import java.util.Collections;
 
-import core.SQL;
-import core.Settings;
-import core.Utils;
+import de.deadlocker8.smarttime.core.SQL;
+import de.deadlocker8.smarttime.core.Settings;
+import de.deadlocker8.smarttime.core.Utils;
 import javafx.beans.value.ChangeListener;
 import javafx.beans.value.ObservableValue;
 import javafx.event.ActionEvent;
diff --git a/src/userInterface/TimePickerController.java b/src/main/java/de/deadlocker8/smarttime/controller/TimePickerController.java
similarity index 99%
rename from src/userInterface/TimePickerController.java
rename to src/main/java/de/deadlocker8/smarttime/controller/TimePickerController.java
index ac46f5cc6cdd28aa0607e26b50b0a6c89511adfc..e538f7441c4c73cc67c3efdaa57d97f128b8a4d7 100644
--- a/src/userInterface/TimePickerController.java
+++ b/src/main/java/de/deadlocker8/smarttime/controller/TimePickerController.java
@@ -1,4 +1,4 @@
-package userInterface;
+package de.deadlocker8.smarttime.controller;
 
 import java.net.URL;
 import java.util.ResourceBundle;
diff --git a/src/userInterface/UserInterfaceController.java b/src/main/java/de/deadlocker8/smarttime/controller/UserInterfaceController.java
similarity index 96%
rename from src/userInterface/UserInterfaceController.java
rename to src/main/java/de/deadlocker8/smarttime/controller/UserInterfaceController.java
index 00c85d8d80a1a4c4491794c0086f6e9af77792f5..012d4fcdd1b172351050d6289525b5f207c26c48 100644
--- a/src/userInterface/UserInterfaceController.java
+++ b/src/main/java/de/deadlocker8/smarttime/controller/UserInterfaceController.java
@@ -1,4 +1,4 @@
-package userInterface;
+package de.deadlocker8.smarttime.controller;
 
 import java.io.File;
 import java.io.IOException;
@@ -12,14 +12,14 @@ import java.util.Optional;
 import java.util.ResourceBundle;
 import java.util.regex.Pattern;
 
-import charts.ChartGUIController;
-import core.Exporter;
-import core.Importer;
-import core.LogObject;
-import core.SQL;
-import core.Settings;
-import core.Timer;
-import core.Utils;
+import de.deadlocker8.smarttime.charts.ChartGUIController;
+import de.deadlocker8.smarttime.core.Exporter;
+import de.deadlocker8.smarttime.core.Importer;
+import de.deadlocker8.smarttime.core.LogObject;
+import de.deadlocker8.smarttime.core.SQL;
+import de.deadlocker8.smarttime.core.Settings;
+import de.deadlocker8.smarttime.core.Timer;
+import de.deadlocker8.smarttime.core.Utils;
 import javafx.application.Platform;
 import javafx.beans.property.SimpleStringProperty;
 import javafx.beans.property.StringProperty;
@@ -95,7 +95,7 @@ public class UserInterfaceController
 	private SQL sql;
 	private Stage waitingStage = new Stage();
 	private Image icon;
-	private final ResourceBundle bundle = ResourceBundle.getBundle("userInterface/", Locale.GERMANY);
+	private final ResourceBundle bundle = ResourceBundle.getBundle("de/deadlocker8/smarttime/", Locale.GERMANY);
 	private Settings settings;
 
 	public void init(Stage stage)
@@ -104,7 +104,7 @@ public class UserInterfaceController
 
 		labelSeparator.setStyle("-fx-background-color: #cdc6c6; -fx-font-size: 0.7");
 		PathUtils.checkFolder(new File(DEFAULT_SAVE_PATH));
-		icon = new Image("/userInterface/icon.png");
+		icon = new Image("/de/deadlocker8/smarttime/icon.png");
 		accordion.setExpandedPane(gesamtesLog);
 		projektExistiertFlag = false;
 		labelTime.setText("0 h  0  min  0 sek");
@@ -184,7 +184,7 @@ public class UserInterfaceController
 		{
 			try
 			{
-				FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("projektFenster.fxml"));
+				FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/de/deadlocker8/smarttime/fxml/projektFenster.fxml"));
 				Parent root = (Parent)fxmlLoader.load();
 				Stage newStage = new Stage();
 				newStage.setScene(new Scene(root, 455, 300));
@@ -438,10 +438,10 @@ public class UserInterfaceController
 	{
 		try
 		{
-			FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/charts/chartGUI.fxml"));
+			FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/de/deadlocker8/smarttime/fxml/chartGUI.fxml"));
 			Parent root = (Parent)fxmlLoader.load();
 			Scene scene = new Scene(root, 800, 600);
-			scene.getStylesheets().add("charts/Chart.css");
+			scene.getStylesheets().add("/de/deadlocker8/smarttime/css/Chart.css");
 			Stage newStage = new Stage();
 			newStage.setScene(scene);
 			newStage.setTitle("Diagramme");
@@ -520,7 +520,7 @@ public class UserInterfaceController
 	{
 		try
 		{
-			FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/userInterface/InsertTimeGUI.fxml"));
+			FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/de/deadlocker8/smarttime/fxml/InsertTimeGUI.fxml"));
 			Parent root = (Parent)fxmlLoader.load();
 			Scene scene = new Scene(root, 540, 400);
 			Stage newStage = new Stage();
@@ -534,7 +534,7 @@ public class UserInterfaceController
 
 			newStage.setResizable(false);
 			newStage.initModality(Modality.APPLICATION_MODAL);
-			newStage.showAndWait();
+			newStage.show();
 		}
 		catch(IOException e)
 		{
@@ -718,7 +718,7 @@ public class UserInterfaceController
 	{
 		try
 		{
-			FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("editGUI.fxml"));
+			FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/de/deadlocker8/smarttime/fxml/editGUI.fxml"));
 			Parent root = (Parent)fxmlLoader.load();
 			Stage newStage = new Stage();
 			newStage.setScene(new Scene(root, 455, 280));
diff --git a/src/core/Exporter.java b/src/main/java/de/deadlocker8/smarttime/core/Exporter.java
similarity index 65%
rename from src/core/Exporter.java
rename to src/main/java/de/deadlocker8/smarttime/core/Exporter.java
index 205bdf1ae42410b58cb4389ec8c0314b184bf76e..3fe6ff79d25c6af9b6e3c374ffc4d14c2aa58b77 100644
--- a/src/core/Exporter.java
+++ b/src/main/java/de/deadlocker8/smarttime/core/Exporter.java
@@ -1,4 +1,4 @@
-package core;
+package de.deadlocker8.smarttime.core;
 
 import java.io.BufferedWriter;
 import java.io.File;
@@ -6,7 +6,8 @@ import java.io.FileWriter;
 import java.util.ArrayList;
 import java.util.Date;
 
-import org.jason.JSONObject;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonObject;
 
 import javafx.application.Platform;
 import javafx.scene.control.Alert.AlertType;
@@ -35,21 +36,24 @@ public class Exporter
 			SQL sql = new SQL(path);			
 			ArrayList<LogObject> objects = sql.getLogObjects();
 			
-			JSONObject allItems = new JSONObject();
+			JsonObject allItems = new JsonObject();			
+			allItems.addProperty("SmartTime", new Date().toString());
 			
-			allItems.put("SmartTime", new Date());		
+			JsonArray allLogObjects = new JsonArray();			
 			
 			for(LogObject current : objects)
 			{
-				JSONObject item = new JSONObject();	
-				item.put("date", current.getDate());
-				item.put("startTime", current.getStartTime());
-				item.put("endTime", current.getEndTime());
-				item.put("duration", current.getDuration());	
-				item.put("project", current.getProject());
-				item.put("task", current.getTask());
-				allItems.append("logObjects", item);
+				JsonObject item = new JsonObject();	
+				item.addProperty("date", current.getDate());
+				item.addProperty("startTime", current.getStartTime());
+				item.addProperty("endTime", current.getEndTime());
+				item.addProperty("duration", current.getDuration());	
+				item.addProperty("project", current.getProject());
+				item.addProperty("task", current.getTask());
+				allLogObjects.add(item);
 			}	
+			
+			allItems.add("logObjects", allLogObjects);
 		
 			BufferedWriter out = new BufferedWriter(new FileWriter(file));		
             out.write(allItems.toString());           
diff --git a/src/core/Importer.java b/src/main/java/de/deadlocker8/smarttime/core/Importer.java
similarity index 83%
rename from src/core/Importer.java
rename to src/main/java/de/deadlocker8/smarttime/core/Importer.java
index c6a6152727ce1bca9b2480eb9ecf5dc346ea3847..f63fad730006d7330a3a5aaa7c121ee82de1065c 100644
--- a/src/core/Importer.java
+++ b/src/main/java/de/deadlocker8/smarttime/core/Importer.java
@@ -1,4 +1,4 @@
-package core;
+package de.deadlocker8.smarttime.core;
 
 import java.io.BufferedReader;
 import java.io.File;
@@ -7,8 +7,9 @@ import java.io.InputStreamReader;
 import java.util.ArrayList;
 import java.util.regex.Pattern;
 
-import org.jason.JSONArray;
-import org.jason.JSONObject;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonParser;
 
 import javafx.application.Platform;
 import javafx.scene.control.Alert.AlertType;
@@ -105,19 +106,19 @@ public class Importer
 			}			
 			reader.close();			
 			
-			JSONObject allItems = new JSONObject(text);		
+			JsonObject allItems = new JsonParser().parse(text).getAsJsonObject();
 			
 			SQL sql = new SQL(path);
-			JSONArray loadedItems = (JSONArray)allItems.get("logObjects");
-			for(int i = 0; i < loadedItems.length(); i++)
+			JsonArray loadedItems = (JsonArray)allItems.get("logObjects");
+			for(int i = 0; i < loadedItems.size(); i++)
 			{
-				JSONObject item = (JSONObject) loadedItems.get(i);
-				String date = item.getString("date");
-				String startTime = item.getString("startTime");
-				String endTime = item.getString("endTime");
-				long duration = item.getLong("duration");
-				String project = item.getString("project");
-				String task = item.getString("task");
+				JsonObject item = (JsonObject) loadedItems.get(i);
+				String date = item.get("date").getAsString();
+				String startTime = item.get("startTime").getAsString();
+				String endTime = item.get("endTime").getAsString();
+				long duration = item.get("duration").getAsLong();
+				String project = item.get("project").getAsString();
+				String task = item.get("task").getAsString();
 				
 				String[] dateParts = date.split(Pattern.quote("."));
 				
diff --git a/src/core/LogObject.java b/src/main/java/de/deadlocker8/smarttime/core/LogObject.java
similarity index 98%
rename from src/core/LogObject.java
rename to src/main/java/de/deadlocker8/smarttime/core/LogObject.java
index dfd6da40c3bb37ea9569713a68ad5896ebd55273..8d27fe5b661b6c1a58a7adaaf46a1c43c46948a0 100644
--- a/src/core/LogObject.java
+++ b/src/main/java/de/deadlocker8/smarttime/core/LogObject.java
@@ -1,4 +1,4 @@
-package core;
+package de.deadlocker8.smarttime.core;
 
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
diff --git a/src/core/SQL.java b/src/main/java/de/deadlocker8/smarttime/core/SQL.java
similarity index 99%
rename from src/core/SQL.java
rename to src/main/java/de/deadlocker8/smarttime/core/SQL.java
index 9857023dfdd43154333a7a3987f0712fe44c5edc..9c0eec437b1028b8e8c0a6173ceb00c3c2cb73b9 100644
--- a/src/core/SQL.java
+++ b/src/main/java/de/deadlocker8/smarttime/core/SQL.java
@@ -1,4 +1,4 @@
-package core;
+package de.deadlocker8.smarttime.core;
 
 import java.sql.Connection;
 import java.sql.DriverManager;
diff --git a/src/core/Settings.java b/src/main/java/de/deadlocker8/smarttime/core/Settings.java
similarity index 95%
rename from src/core/Settings.java
rename to src/main/java/de/deadlocker8/smarttime/core/Settings.java
index fd6a1517f26e91e326dbc2a0b8e45174abadd8e1..68113c6654c5c84c2990c4d007b76b3454934d14 100644
--- a/src/core/Settings.java
+++ b/src/main/java/de/deadlocker8/smarttime/core/Settings.java
@@ -1,4 +1,4 @@
-package core;
+package de.deadlocker8.smarttime.core;
 
 public class Settings
 {
diff --git a/src/core/Timer.java b/src/main/java/de/deadlocker8/smarttime/core/Timer.java
similarity index 95%
rename from src/core/Timer.java
rename to src/main/java/de/deadlocker8/smarttime/core/Timer.java
index b91cb483c4d8e5acf11abd1aaa72e77cc7c72e59..4c21a5e18e6dc323cf9456194cc8bdb31531fd9f 100644
--- a/src/core/Timer.java
+++ b/src/main/java/de/deadlocker8/smarttime/core/Timer.java
@@ -1,4 +1,4 @@
-package core;
+package de.deadlocker8.smarttime.core;
 
 import javafx.animation.KeyFrame;
 import javafx.animation.Timeline;
diff --git a/src/core/Utils.java b/src/main/java/de/deadlocker8/smarttime/core/Utils.java
similarity index 95%
rename from src/core/Utils.java
rename to src/main/java/de/deadlocker8/smarttime/core/Utils.java
index a040493d2ec4c058a5e02824f3722a714a20da8c..fe3725341f821d6c8abaafec6a01c3be7f684738 100644
--- a/src/core/Utils.java
+++ b/src/main/java/de/deadlocker8/smarttime/core/Utils.java
@@ -1,4 +1,4 @@
-package core;
+package de.deadlocker8.smarttime.core;
 
 import java.io.File;
 import java.io.IOException;
@@ -17,7 +17,7 @@ import tools.PathUtils;
 
 public class Utils 
 {   
-	private static final ResourceBundle bundle = ResourceBundle.getBundle("userInterface/", Locale.GERMANY);
+	private static final ResourceBundle bundle = ResourceBundle.getBundle("de/deadlocker8/smarttime/", Locale.GERMANY);
 	
     private static final String[] AVAILABLE_MONTH_NAMES = {"Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"};
     
diff --git a/src/userInterface/Main.java b/src/main/java/de/deadlocker8/smarttime/main/Main.java
similarity index 79%
rename from src/userInterface/Main.java
rename to src/main/java/de/deadlocker8/smarttime/main/Main.java
index 11b2eb2a911aebe11b80d4b87fc0477b35d96631..d4f01ba9aa26141e83109509e6ff167933a020e6 100644
--- a/src/userInterface/Main.java
+++ b/src/main/java/de/deadlocker8/smarttime/main/Main.java
@@ -1,9 +1,10 @@
-package userInterface;
+package de.deadlocker8.smarttime.main;
 
 import java.io.File;
 import java.util.Locale;
 import java.util.ResourceBundle;
 
+import de.deadlocker8.smarttime.controller.UserInterfaceController;
 import javafx.application.Application;
 import javafx.event.EventHandler;
 import javafx.fxml.FXMLLoader;
@@ -26,11 +27,11 @@ public class Main extends Application
 	{
 		try
 		{			
-			FXMLLoader loader = new FXMLLoader(getClass().getResource("userInterface.fxml"));
+			FXMLLoader loader = new FXMLLoader(getClass().getResource("/de/deadlocker8/smarttime/fxml/userInterface.fxml"));
 			Parent root = (Parent)loader.load();
 
 			Scene scene = new Scene(root, 800, 800);
-			scene.getStylesheets().add("/userInterface/application.css");
+			scene.getStylesheets().add("/de/deadlocker8/smarttime/css/application.css");
 			stage.setMinHeight(500);
 			stage.setMinWidth(700);
 			stage.setResizable(true);
@@ -40,7 +41,7 @@ public class Main extends Application
 			UserInterfaceController controller = (UserInterfaceController)loader.getController();			
 			controller.init(stage);
 
-			stage.getIcons().add(new Image("/userInterface/icon.png"));
+			stage.getIcons().add(new Image("/de/deadlocker8/smarttime/icon.png"));
 			stage.show();
 
 			// fängt die Aufforderung das Fenster zu schließen ab, um vorher
@@ -51,7 +52,7 @@ public class Main extends Application
 				{
 					if(controller.isTimerRunning())
 					{
-						AlertGenerator.showAlert(AlertType.WARNING, "Warnung", "", "Die Stoppuhr läuft noch!", new Image("/userInterface/icon.png"), stage, null, false);
+						AlertGenerator.showAlert(AlertType.WARNING, "Warnung", "", "Die Stoppuhr läuft noch!", new Image("/de/deadlocker8/smarttime/icon.png"), stage, null, false);
 						
 						// "schluckt" die Aufforderung das Fenster zu schließen
 						// (Fenster wird dadurch nicht geschlossen)
@@ -73,7 +74,7 @@ public class Main extends Application
 	@Override
 	public void init() throws Exception
 	{
-		ResourceBundle bundle = ResourceBundle.getBundle("userInterface/", Locale.GERMANY);
+		ResourceBundle bundle = ResourceBundle.getBundle("de/deadlocker8/smarttime/", Locale.GERMANY);
 		
 		Parameters params = getParameters();
 		String logLevelParam = params.getNamed().get("loglevel");		
diff --git a/src/userInterface/_de.properties b/src/main/resources/de/deadlocker8/smarttime/_de.properties
similarity index 100%
rename from src/userInterface/_de.properties
rename to src/main/resources/de/deadlocker8/smarttime/_de.properties
diff --git a/src/charts/Chart.css b/src/main/resources/de/deadlocker8/smarttime/css/Chart.css
similarity index 100%
rename from src/charts/Chart.css
rename to src/main/resources/de/deadlocker8/smarttime/css/Chart.css
diff --git a/src/userInterface/application.css b/src/main/resources/de/deadlocker8/smarttime/css/application.css
similarity index 100%
rename from src/userInterface/application.css
rename to src/main/resources/de/deadlocker8/smarttime/css/application.css
diff --git a/src/userInterface/InsertTimeGUI.fxml b/src/main/resources/de/deadlocker8/smarttime/fxml/InsertTimeGUI.fxml
similarity index 97%
rename from src/userInterface/InsertTimeGUI.fxml
rename to src/main/resources/de/deadlocker8/smarttime/fxml/InsertTimeGUI.fxml
index 5bcfeb30f10ebb7745edc0dacbdcb40f64d0f01f..b42807d04113958d8a2fa2151ed7686afc736067 100644
--- a/src/userInterface/InsertTimeGUI.fxml
+++ b/src/main/resources/de/deadlocker8/smarttime/fxml/InsertTimeGUI.fxml
@@ -8,7 +8,7 @@
 <?import javafx.scene.layout.VBox?>
 <?import javafx.scene.text.Font?>
 
-<AnchorPane prefHeight="400.0" prefWidth="540.0" xmlns="http://javafx.com/javafx/8.0.111" xmlns:fx="http://javafx.com/fxml/1" fx:controller="userInterface.InsertTimeController">
+<AnchorPane prefHeight="400.0" prefWidth="540.0" xmlns="http://javafx.com/javafx/8.0.111" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.deadlocker8.smarttime.controller.InsertTimeController">
    <children>
       <Label layoutX="35.0" layoutY="128.0" text="Startdatum:">
          <font>
diff --git a/src/main/resources/de/deadlocker8/smarttime/fxml/TimePicker.fxml b/src/main/resources/de/deadlocker8/smarttime/fxml/TimePicker.fxml
new file mode 100644
index 0000000000000000000000000000000000000000..5ca6e103b7b4cfcb6edbdd04e1cecf172453ca32
--- /dev/null
+++ b/src/main/resources/de/deadlocker8/smarttime/fxml/TimePicker.fxml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import javafx.scene.layout.AnchorPane?>
+<?import javafx.scene.layout.HBox?>
+
+<AnchorPane xmlns="http://javafx.com/javafx/8.0.111" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.deadlocker8.smarttime.controller.TimePickerController">
+   <children>
+      <HBox fx:id="hbox" alignment="CENTER" />
+   </children>
+</AnchorPane>
diff --git a/src/charts/chartGUI.fxml b/src/main/resources/de/deadlocker8/smarttime/fxml/chartGUI.fxml
similarity index 96%
rename from src/charts/chartGUI.fxml
rename to src/main/resources/de/deadlocker8/smarttime/fxml/chartGUI.fxml
index 3a2dbc7619434b70a33f6b926096e2f181296e67..ab8d0d3501c0c4223c1a0f7321acaa6426aeacb1 100644
--- a/src/charts/chartGUI.fxml
+++ b/src/main/resources/de/deadlocker8/smarttime/fxml/chartGUI.fxml
@@ -8,7 +8,7 @@
 <?import javafx.scene.layout.VBox?>
 <?import javafx.scene.text.Font?>
 
-<AnchorPane prefHeight="600.0" prefWidth="800.0" xmlns="http://javafx.com/javafx/8.0.65" xmlns:fx="http://javafx.com/fxml/1" fx:controller="charts.ChartGUIController">
+<AnchorPane prefHeight="600.0" prefWidth="800.0" xmlns="http://javafx.com/javafx/8.0.111" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.deadlocker8.smarttime.charts.ChartGUIController">
    <children>
       <VBox prefHeight="600.0" prefWidth="800.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
          <children>
diff --git a/src/userInterface/editGUI.fxml b/src/main/resources/de/deadlocker8/smarttime/fxml/editGUI.fxml
similarity index 91%
rename from src/userInterface/editGUI.fxml
rename to src/main/resources/de/deadlocker8/smarttime/fxml/editGUI.fxml
index ff6473bb56759fa7bb147f0290cfe6290f09b360..a6b68bbb3e783a211591b5231531b9b85066a5df 100644
--- a/src/userInterface/editGUI.fxml
+++ b/src/main/resources/de/deadlocker8/smarttime/fxml/editGUI.fxml
@@ -6,7 +6,7 @@
 <?import javafx.scene.layout.AnchorPane?>
 <?import javafx.scene.text.Font?>
 
-<AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="300.0" prefWidth="455.0" xmlns="http://javafx.com/javafx/8.0.65" xmlns:fx="http://javafx.com/fxml/1" fx:controller="userInterface.EditController">
+<AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="300.0" prefWidth="455.0" xmlns="http://javafx.com/javafx/8.0.111" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.deadlocker8.smarttime.controller.EditController">
    <children>
       <Button layoutX="66.0" layoutY="221.0" mnemonicParsing="false" onAction="#okButton" prefWidth="92.0" text="OK">
          <font>
diff --git a/src/userInterface/projektFenster.fxml b/src/main/resources/de/deadlocker8/smarttime/fxml/projektFenster.fxml
similarity index 89%
rename from src/userInterface/projektFenster.fxml
rename to src/main/resources/de/deadlocker8/smarttime/fxml/projektFenster.fxml
index e81fcf4ce99f4d60541f3e718a658ea7b632eba1..c9c1b55ae875e0728539e6040c2bb8e6d18d38d7 100644
--- a/src/userInterface/projektFenster.fxml
+++ b/src/main/resources/de/deadlocker8/smarttime/fxml/projektFenster.fxml
@@ -6,7 +6,7 @@
 <?import javafx.scene.layout.AnchorPane?>
 <?import javafx.scene.text.Font?>
 
-<AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="300.0" prefWidth="455.0" xmlns="http://javafx.com/javafx/8.0.65" xmlns:fx="http://javafx.com/fxml/1" fx:controller="userInterface.ProjektFensterController">
+<AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="300.0" prefWidth="455.0" xmlns="http://javafx.com/javafx/8.0.111" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.deadlocker8.smarttime.controller.ProjektFensterController">
    <children>
       <Button layoutX="109.0" layoutY="223.0" mnemonicParsing="false" onAction="#okButton" prefWidth="100.0" text="OK">
          <font>
diff --git a/src/userInterface/userInterface.fxml b/src/main/resources/de/deadlocker8/smarttime/fxml/userInterface.fxml
similarity index 99%
rename from src/userInterface/userInterface.fxml
rename to src/main/resources/de/deadlocker8/smarttime/fxml/userInterface.fxml
index 48dad1f0561ebc2a40f3b0d14531f90c1d0fd19d..873b4d645c4f34174cdf88119b67785c7909997c 100644
--- a/src/userInterface/userInterface.fxml
+++ b/src/main/resources/de/deadlocker8/smarttime/fxml/userInterface.fxml
@@ -16,7 +16,7 @@
 <?import javafx.scene.layout.VBox?>
 <?import javafx.scene.text.Font?>
 
-<AnchorPane prefHeight="800.0" prefWidth="800.0" xmlns="http://javafx.com/javafx/8.0.111" xmlns:fx="http://javafx.com/fxml/1" fx:controller="userInterface.UserInterfaceController">
+<AnchorPane prefHeight="800.0" prefWidth="800.0" xmlns="http://javafx.com/javafx/8.0.111" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.deadlocker8.smarttime.controller.UserInterfaceController">
    <children>
       <VBox alignment="TOP_CENTER" layoutX="143.0" layoutY="69.0" prefHeight="800.0" prefWidth="650.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
          <children>
diff --git a/src/userInterface/icon.png b/src/main/resources/de/deadlocker8/smarttime/icon.png
similarity index 100%
rename from src/userInterface/icon.png
rename to src/main/resources/de/deadlocker8/smarttime/icon.png
diff --git a/src/userInterface/TimePicker.fxml b/src/userInterface/TimePicker.fxml
deleted file mode 100644
index 4d9f1797da2e768a94e76ba4d061e8ace152b585..0000000000000000000000000000000000000000
--- a/src/userInterface/TimePicker.fxml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<?import javafx.scene.text.*?>
-<?import javafx.scene.control.*?>
-<?import java.lang.*?>
-<?import javafx.scene.layout.*?>
-<?import javafx.scene.layout.AnchorPane?>
-
-<AnchorPane xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="userInterface.TimePickerController">
-   <children>
-      <HBox fx:id="hbox" alignment="CENTER" />
-   </children>
-</AnchorPane>