diff --git a/src/main/java/ch/hepia/Main.java b/src/main/java/ch/hepia/Main.java
index 5fec3648e7b6204548d2aa013b538f2b964f48f0..7efc6c084d0c9cf6eed99ac2af37113aa4d210d5 100644
--- a/src/main/java/ch/hepia/Main.java
+++ b/src/main/java/ch/hepia/Main.java
@@ -5,12 +5,10 @@ import ch.hepia.config.AppContext;
 import ch.hepia.mq.MessageManager;
 import javafx.application.Application;
 import javafx.application.Platform;
-import javafx.event.EventHandler;
 import javafx.fxml.FXMLLoader;
 import javafx.scene.Parent;
 import javafx.scene.Scene;
 import javafx.stage.Stage;
-import javafx.stage.WindowEvent;
 
 import java.io.IOException;
 
@@ -23,7 +21,7 @@ public class Main extends Application {
 	private static AppContext appContext;
 
 	/**
-	 * Mein starter
+	 * Main starter
 	 * @param args The passed arguments
 	 */
 	public static void main(String[] args) throws Exception {
@@ -35,6 +33,11 @@ public class Main extends Application {
 		launch(args);
 	}
 
+	/**
+	 * Starts up the JavaFX app.
+	 * @param stage The stage to start
+	 * @throws IOException When goofed up with JavaFX
+	 */
 	@Override
 	public void start(Stage stage) throws IOException {
 		Parent root = FXMLLoader.load(Main.class.getResource("/fxml/ConnectionWindow.fxml"));
diff --git a/src/main/java/ch/hepia/events/ChatMessage.java b/src/main/java/ch/hepia/events/ChatMessage.java
index f765e35996885750060f99d553427eb0a3e08521..8fd7251a180c88081caa8b14d785453d3345594a 100644
--- a/src/main/java/ch/hepia/events/ChatMessage.java
+++ b/src/main/java/ch/hepia/events/ChatMessage.java
@@ -4,11 +4,19 @@ import ch.hepia.models.User;
 
 import java.io.Serializable;
 
+/**
+ * Implement a chat message event
+ */
 public class ChatMessage implements Event, Serializable {
     private static final long serialVersionUID = 0xAEF34565631L;
     private User user;
     private String chatMessage;
 
+    /**
+     * Main constructor
+     * @param user The user
+     * @param chatMessage The message
+     */
     public ChatMessage(User user, String chatMessage) {
         this.user = user;
         this.chatMessage = chatMessage;
diff --git a/src/main/java/ch/hepia/events/Event.java b/src/main/java/ch/hepia/events/Event.java
index b99571598b38a51b10854c194ef2704aae4baa55..8504935660b525040bac4cf5d05fbad904a2a146 100644
--- a/src/main/java/ch/hepia/events/Event.java
+++ b/src/main/java/ch/hepia/events/Event.java
@@ -6,5 +6,9 @@ import ch.hepia.models.User;
  * Represents an event send into the MQ.
  */
 public interface Event {
-	public User getUser();
+	/**
+	 * Gets the user
+	 * @return the user
+	 */
+	User getUser();
 }
diff --git a/src/main/java/ch/hepia/events/Meeting.java b/src/main/java/ch/hepia/events/Meeting.java
index 73f5e4c213a429098d7328c677d072b71d2797fc..9d56620c096fed346a9ec74da3b6c9600f4b9b45 100644
--- a/src/main/java/ch/hepia/events/Meeting.java
+++ b/src/main/java/ch/hepia/events/Meeting.java
@@ -5,6 +5,9 @@ import ch.hepia.models.User;
 
 import java.io.Serializable;
 
+/**
+ * Implements a meeting event, that is when two users meet somewhere.
+ */
 public class Meeting implements Serializable, Event {
 	private static final long serialVersionUID = 0xAEF34565679L;
 	private User user; //
diff --git a/src/main/java/ch/hepia/models/User.java b/src/main/java/ch/hepia/models/User.java
index a81d7c8a7d67b3a543ac01d83905149e1807c577..8f70f2ce79f740be850df054f5641414aadee3ad 100644
--- a/src/main/java/ch/hepia/models/User.java
+++ b/src/main/java/ch/hepia/models/User.java
@@ -1,6 +1,8 @@
 package ch.hepia.models;
+
 import java.io.Serializable;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.List;
 /**
  * Represents an user.
  */
@@ -9,6 +11,10 @@ public class User implements Serializable {
 	private String username;
 	private transient List<User> ignoredUserList;
 
+	/**
+	 * Main constructor
+	 * @param username the username
+	 */
 	public User(String username){
 		this.username = username;
 		this.ignoredUserList = new ArrayList<>();
diff --git a/src/main/java/ch/hepia/mq/Message.java b/src/main/java/ch/hepia/mq/Message.java
index 6eb92ebeac15dcdbbe829f403f8309ef7dd86f61..a2a23c37e44ed0c85a1f8b133de8f4231ff028d3 100644
--- a/src/main/java/ch/hepia/mq/Message.java
+++ b/src/main/java/ch/hepia/mq/Message.java
@@ -1,6 +1,9 @@
 package ch.hepia.mq;
 import java.io.Serializable;
 
+/**
+ * Represents a message sent to the message queue.
+ */
 public final class Message implements Serializable {
     public static enum Type {
         JoinedJourney, LeftJourney, ChatMessage, Meeting
diff --git a/src/main/java/ch/hepia/mq/MessageManager.java b/src/main/java/ch/hepia/mq/MessageManager.java
index 71028397aea465121c0562b895b407364f1e4054..541cc700ee22ae8ca631af8c4ac566b679e0b8ce 100644
--- a/src/main/java/ch/hepia/mq/MessageManager.java
+++ b/src/main/java/ch/hepia/mq/MessageManager.java
@@ -9,6 +9,9 @@ import java.io.Serializable;
 import java.util.function.Consumer;
 import java.util.function.Predicate;
 
+/**
+ * Represents the wrapper for the message queue.
+ */
 public class MessageManager extends MessageQueue {
 
 
diff --git a/src/main/java/ch/hepia/mq/MessageQueue.java b/src/main/java/ch/hepia/mq/MessageQueue.java
index a9df5112fe5473f98124e7076aba41ad0251b4cb..c6823d7c892282fecc1447d684039e9057a02a3e 100644
--- a/src/main/java/ch/hepia/mq/MessageQueue.java
+++ b/src/main/java/ch/hepia/mq/MessageQueue.java
@@ -1,19 +1,18 @@
 package ch.hepia.mq;
 
-import java.util.ArrayList;
-import java.util.List;
-import java.util.function.Consumer;
-import java.io.ByteArrayOutputStream;
-import java.io.ObjectOutputStream;
-import java.io.ObjectInputStream;
-import java.io.ByteArrayInputStream;
-import java.io.Serializable;
-
-import com.rabbitmq.client.ConnectionFactory;
 import com.rabbitmq.client.Channel;
 import com.rabbitmq.client.Connection;
+import com.rabbitmq.client.ConnectionFactory;
 import com.rabbitmq.client.DeliverCallback;
 
+import java.io.*;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.function.Consumer;
+
+/**
+ * Implementation of the message queue.
+ */
 public abstract class MessageQueue {
 	private final String exchange;
 	private final Connection mqConnection;
diff --git a/src/main/java/ch/hepia/ui/ConnectionController.java b/src/main/java/ch/hepia/ui/ConnectionController.java
index 4815afd50b76297a95a36ba69c4fe1b4f401a261..9c86154d3b1df55d5eb326da8ddefd64f59bfabd 100644
--- a/src/main/java/ch/hepia/ui/ConnectionController.java
+++ b/src/main/java/ch/hepia/ui/ConnectionController.java
@@ -4,6 +4,7 @@ import ch.hepia.Main;
 import ch.hepia.config.AppConfig;
 import ch.hepia.models.User;
 import javafx.animation.FadeTransition;
+import javafx.application.Platform;
 import javafx.event.ActionEvent;
 import javafx.fxml.FXML;
 import javafx.fxml.FXMLLoader;
@@ -14,12 +15,14 @@ import javafx.scene.control.Button;
 import javafx.scene.control.Label;
 import javafx.scene.control.TextField;
 import javafx.stage.Stage;
-import javafx.application.Platform;
 import javafx.util.Duration;
 
 import java.net.URL;
 import java.util.ResourceBundle;
 
+/**
+ * Implements the login screen
+ */
 public class ConnectionController implements Initializable {
 
 	@FXML
diff --git a/src/main/java/ch/hepia/ui/MainWindowController.java b/src/main/java/ch/hepia/ui/MainWindowController.java
index bef0d2885c468dcafec252a7df38c5c6f91322d5..579bd51f070c506c72a9a6b246b669df44b75b43 100644
--- a/src/main/java/ch/hepia/ui/MainWindowController.java
+++ b/src/main/java/ch/hepia/ui/MainWindowController.java
@@ -36,7 +36,10 @@ import java.util.Optional;
 import java.util.ResourceBundle;
 import java.util.function.Predicate;
 
-
+/**
+ * Implements all of the logic, UI and events for the main window.
+ * It is heavy but it's the price for a nice UI
+ */
 public class MainWindowController implements Initializable {
 
     @FXML