diff --git a/javadoc/NTNU/IDATT1002/ApplicationState.html b/javadoc/NTNU/IDATT1002/ApplicationState.html
deleted file mode 100644
index 1006b124f54618236dcb8f18f6e253513f84d8ba..0000000000000000000000000000000000000000
--- a/javadoc/NTNU/IDATT1002/ApplicationState.html
+++ /dev/null
@@ -1,329 +0,0 @@
-<!DOCTYPE HTML>
-<!-- NewPage -->
-<html lang="no">
-<head>
-<!-- Generated by javadoc (11.0.4) on Wed Apr 01 11:45:14 CEST 2020 -->
-<title>ApplicationState</title>
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<meta name="dc.created" content="2020-04-01">
-<link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
-<link rel="stylesheet" type="text/css" href="../../jquery/jquery-ui.css" title="Style">
-<script type="text/javascript" src="../../script.js"></script>
-<script type="text/javascript" src="../../jquery/jszip/dist/jszip.min.js"></script>
-<script type="text/javascript" src="../../jquery/jszip-utils/dist/jszip-utils.min.js"></script>
-<!--[if IE]>
-<script type="text/javascript" src="../../jquery/jszip-utils/dist/jszip-utils-ie.min.js"></script>
-<![endif]-->
-<script type="text/javascript" src="../../jquery/jquery-3.3.1.js"></script>
-<script type="text/javascript" src="../../jquery/jquery-migrate-3.0.1.js"></script>
-<script type="text/javascript" src="../../jquery/jquery-ui.js"></script>
-</head>
-<body>
-<script type="text/javascript"><!--
-    try {
-        if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="ApplicationState";
-        }
-    }
-    catch(err) {
-    }
-//-->
-var data = {"i0":9,"i1":9};
-var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],8:["t4","Concrete Methods"]};
-var altColor = "altColor";
-var rowColor = "rowColor";
-var tableTab = "tableTab";
-var activeTableTab = "activeTableTab";
-var pathtoroot = "../../";
-var useModuleDirectories = true;
-loadScripts(document, 'script');</script>
-<noscript>
-<div>JavaScript is disabled on your browser.</div>
-</noscript>
-<header role="banner">
-<nav role="navigation">
-<div class="fixedNav">
-<!-- ========= START OF TOP NAVBAR ======= -->
-<div class="topNav"><a id="navbar.top">
-<!--   -->
-</a>
-<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
-<a id="navbar.top.firstrow">
-<!--   -->
-</a>
-<ul class="navList" title="Navigation">
-<li><a href="../../index.html">Overview</a></li>
-<li><a href="package-summary.html">Package</a></li>
-<li class="navBarCell1Rev">Class</li>
-<li><a href="package-tree.html">Tree</a></li>
-<li><a href="../../deprecated-list.html">Deprecated</a></li>
-<li><a href="../../index-files/index-1.html">Index</a></li>
-<li><a href="../../help-doc.html">Help</a></li>
-</ul>
-</div>
-<div class="subNav">
-<ul class="navList" id="allclasses_navbar_top">
-<li><a href="../../allclasses.html">All&nbsp;Classes</a></li>
-</ul>
-<ul class="navListSearch">
-<li><label for="search">SEARCH:</label>
-<input type="text" id="search" value="search" disabled="disabled">
-<input type="reset" id="reset" value="reset" disabled="disabled">
-</li>
-</ul>
-<div>
-<script type="text/javascript"><!--
-  allClassesLink = document.getElementById("allclasses_navbar_top");
-  if(window==top) {
-    allClassesLink.style.display = "block";
-  }
-  else {
-    allClassesLink.style.display = "none";
-  }
-  //-->
-</script>
-<noscript>
-<div>JavaScript is disabled on your browser.</div>
-</noscript>
-</div>
-<div>
-<ul class="subNavList">
-<li>Summary:&nbsp;</li>
-<li>Nested&nbsp;|&nbsp;</li>
-<li>Field&nbsp;|&nbsp;</li>
-<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
-<li><a href="#method.summary">Method</a></li>
-</ul>
-<ul class="subNavList">
-<li>Detail:&nbsp;</li>
-<li>Field&nbsp;|&nbsp;</li>
-<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
-<li><a href="#method.detail">Method</a></li>
-</ul>
-</div>
-<a id="skip.navbar.top">
-<!--   -->
-</a></div>
-<!-- ========= END OF TOP NAVBAR ========= -->
-</div>
-<div class="navPadding">&nbsp;</div>
-<script type="text/javascript"><!--
-$('.navPadding').css('padding-top', $('.fixedNav').css("height"));
-//-->
-</script>
-</nav>
-</header>
-<!-- ======== START OF CLASS DATA ======== -->
-<main role="main">
-<div class="header">
-<div class="subTitle"><span class="packageLabelInType">Package</span>&nbsp;<a href="package-summary.html">NTNU.IDATT1002</a></div>
-<h2 title="Class ApplicationState" class="title">Class ApplicationState</h2>
-</div>
-<div class="contentContainer">
-<ul class="inheritance">
-<li>java.lang.Object</li>
-<li>
-<ul class="inheritance">
-<li>NTNU.IDATT1002.service.ApplicationState</li>
-</ul>
-</li>
-</ul>
-<div class="description">
-<ul class="blockList">
-<li class="blockList">
-<hr>
-<pre>public final class <span class="typeNameLabel">ApplicationState</span>
-extends java.lang.Object</pre>
-<div class="block">Class Application State. Keeps a record of the global application state, such as the current logged in user.</div>
-</li>
-</ul>
-</div>
-<div class="summary">
-<ul class="blockList">
-<li class="blockList">
-<!-- ======== CONSTRUCTOR SUMMARY ======== -->
-<section role="region">
-<ul class="blockList">
-<li class="blockList"><a id="constructor.summary">
-<!--   -->
-</a>
-<h3>Constructor Summary</h3>
-<table class="memberSummary">
-<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
-<tr>
-<th class="colFirst" scope="col">Constructor</th>
-<th class="colLast" scope="col">Description</th>
-</tr>
-<tr class="altColor">
-<th class="colConstructorName" scope="row"><code><span class="memberNameLink"><a href="#%3Cinit%3E()">ApplicationState</a></span>()</code></th>
-<td class="colLast">&nbsp;</td>
-</tr>
-</table>
-</li>
-</ul>
-</section>
-<!-- ========== METHOD SUMMARY =========== -->
-<section role="region">
-<ul class="blockList">
-<li class="blockList"><a id="method.summary">
-<!--   -->
-</a>
-<h3>Method Summary</h3>
-<table class="memberSummary">
-<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t1" class="tableTab"><span><a href="javascript:show(1);">Static Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
-<tr>
-<th class="colFirst" scope="col">Modifier and Type</th>
-<th class="colSecond" scope="col">Method</th>
-<th class="colLast" scope="col">Description</th>
-</tr>
-<tr id="i0" class="altColor">
-<td class="colFirst"><code>static <a href="models/User.html" title="class in NTNU.IDATT1002.models">User</a></code></td>
-<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getCurrentUser()">getCurrentUser</a></span>()</code></th>
-<td class="colLast">
-<div class="block">Retrieve the current logged in user if present, or retrieve an anonymous user.</div>
-</td>
-</tr>
-<tr id="i1" class="rowColor">
-<td class="colFirst"><code>static void</code></td>
-<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setCurrentUser(NTNU.IDATT1002.models.User)">setCurrentUser</a></span>&#8203;(<a href="models/User.html" title="class in NTNU.IDATT1002.models">User</a>&nbsp;currentUser)</code></th>
-<td class="colLast">&nbsp;</td>
-</tr>
-</table>
-<ul class="blockList">
-<li class="blockList"><a id="methods.inherited.from.class.java.lang.Object">
-<!--   -->
-</a>
-<h3>Methods inherited from class&nbsp;java.lang.Object</h3>
-<code>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</code></li>
-</ul>
-</li>
-</ul>
-</section>
-</li>
-</ul>
-</div>
-<div class="details">
-<ul class="blockList">
-<li class="blockList">
-<!-- ========= CONSTRUCTOR DETAIL ======== -->
-<section role="region">
-<ul class="blockList">
-<li class="blockList"><a id="constructor.detail">
-<!--   -->
-</a>
-<h3>Constructor Detail</h3>
-<a id="&lt;init&gt;()">
-<!--   -->
-</a>
-<ul class="blockListLast">
-<li class="blockList">
-<h4>ApplicationState</h4>
-<pre>public&nbsp;ApplicationState()</pre>
-</li>
-</ul>
-</li>
-</ul>
-</section>
-<!-- ============ METHOD DETAIL ========== -->
-<section role="region">
-<ul class="blockList">
-<li class="blockList"><a id="method.detail">
-<!--   -->
-</a>
-<h3>Method Detail</h3>
-<a id="setCurrentUser(NTNU.IDATT1002.models.User)">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>setCurrentUser</h4>
-<pre class="methodSignature">public static&nbsp;void&nbsp;setCurrentUser&#8203;(<a href="models/User.html" title="class in NTNU.IDATT1002.models">User</a>&nbsp;currentUser)</pre>
-</li>
-</ul>
-<a id="getCurrentUser()">
-<!--   -->
-</a>
-<ul class="blockListLast">
-<li class="blockList">
-<h4>getCurrentUser</h4>
-<pre class="methodSignature">public static&nbsp;<a href="models/User.html" title="class in NTNU.IDATT1002.models">User</a>&nbsp;getCurrentUser()</pre>
-<div class="block">Retrieve the current logged in user if present, or retrieve an anonymous user.</div>
-<dl>
-<dt><span class="returnLabel">Returns:</span></dt>
-<dd>the current user.</dd>
-<dt><span class="throwsLabel">Throws:</span></dt>
-<dd><code>java.lang.IllegalArgumentException</code> - if neither the current user nor the anonymous user are present.</dd>
-</dl>
-</li>
-</ul>
-</li>
-</ul>
-</section>
-</li>
-</ul>
-</div>
-</div>
-</main>
-<!-- ========= END OF CLASS DATA ========= -->
-<footer role="contentinfo">
-<nav role="navigation">
-<!-- ======= START OF BOTTOM NAVBAR ====== -->
-<div class="bottomNav"><a id="navbar.bottom">
-<!--   -->
-</a>
-<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
-<a id="navbar.bottom.firstrow">
-<!--   -->
-</a>
-<ul class="navList" title="Navigation">
-<li><a href="../../index.html">Overview</a></li>
-<li><a href="package-summary.html">Package</a></li>
-<li class="navBarCell1Rev">Class</li>
-<li><a href="package-tree.html">Tree</a></li>
-<li><a href="../../deprecated-list.html">Deprecated</a></li>
-<li><a href="../../index-files/index-1.html">Index</a></li>
-<li><a href="../../help-doc.html">Help</a></li>
-</ul>
-</div>
-<div class="subNav">
-<ul class="navList" id="allclasses_navbar_bottom">
-<li><a href="../../allclasses.html">All&nbsp;Classes</a></li>
-</ul>
-<div>
-<script type="text/javascript"><!--
-  allClassesLink = document.getElementById("allclasses_navbar_bottom");
-  if(window==top) {
-    allClassesLink.style.display = "block";
-  }
-  else {
-    allClassesLink.style.display = "none";
-  }
-  //-->
-</script>
-<noscript>
-<div>JavaScript is disabled on your browser.</div>
-</noscript>
-</div>
-<div>
-<ul class="subNavList">
-<li>Summary:&nbsp;</li>
-<li>Nested&nbsp;|&nbsp;</li>
-<li>Field&nbsp;|&nbsp;</li>
-<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
-<li><a href="#method.summary">Method</a></li>
-</ul>
-<ul class="subNavList">
-<li>Detail:&nbsp;</li>
-<li>Field&nbsp;|&nbsp;</li>
-<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
-<li><a href="#method.detail">Method</a></li>
-</ul>
-</div>
-<a id="skip.navbar.bottom">
-<!--   -->
-</a></div>
-<!-- ======== END OF BOTTOM NAVBAR ======= -->
-</nav>
-</footer>
-</body>
-</html>
diff --git a/src/main/java/NTNU/IDATT1002/controllers/package-info.java b/src/main/java/NTNU/IDATT1002/controllers/package-info.java
new file mode 100644
index 0000000000000000000000000000000000000000..e1acd6f44b30bda0e51466106aed3a832ac0e34a
--- /dev/null
+++ b/src/main/java/NTNU/IDATT1002/controllers/package-info.java
@@ -0,0 +1,4 @@
+/**
+ * Controllers providing interaction with views and services.
+ */
+package NTNU.IDATT1002.controllers;
\ No newline at end of file
diff --git a/src/main/java/NTNU/IDATT1002/database/package-info.java b/src/main/java/NTNU/IDATT1002/database/package-info.java
new file mode 100644
index 0000000000000000000000000000000000000000..d2588519c2fbc777fe131b31cce61095a5c0b72a
--- /dev/null
+++ b/src/main/java/NTNU/IDATT1002/database/package-info.java
@@ -0,0 +1,6 @@
+/**
+ * Provides a fixture and populates an empty database with this.
+ * The images are defined in a folder 't14-test-images' and is not
+ * available on version control.
+ */
+package NTNU.IDATT1002.database;
\ No newline at end of file
diff --git a/src/main/java/NTNU/IDATT1002/models/package-info.java b/src/main/java/NTNU/IDATT1002/models/package-info.java
new file mode 100644
index 0000000000000000000000000000000000000000..98f8cfae58ffa0471c8f082ec1819ae1227237b8
--- /dev/null
+++ b/src/main/java/NTNU/IDATT1002/models/package-info.java
@@ -0,0 +1,4 @@
+/**
+ * Provides the model classes for the entities in this application.
+ */
+package NTNU.IDATT1002.models;
\ No newline at end of file
diff --git a/src/main/java/NTNU/IDATT1002/package-info.java b/src/main/java/NTNU/IDATT1002/package-info.java
new file mode 100644
index 0000000000000000000000000000000000000000..b67da586c36e8823011c4db15e0f6344813ab8ca
--- /dev/null
+++ b/src/main/java/NTNU/IDATT1002/package-info.java
@@ -0,0 +1,18 @@
+/**
+ * <p>This API provides a javafx application for uploading images, extracting metadata,
+ * manipulating albums and interacting with both on a map.
+ * The map provides not only viewing where the images where taken,
+ * but also enables searching for specific locations/addresses
+ * with autocompletion.</p>
+ *
+ * <p>Also implemented is a user system providing login and associating
+ * images and albums to specific users.</p>
+ *
+ * <p>Secrets required to run the application can be
+ * requested from a system administrator.</p>
+ *
+ * @author Mads Lundegaard, Eirik Steira, Simon Jensen,
+ * Stian Fjæran Mogen, Lars Brodin Østby, Nicolay Schiøll-Johansen
+ * @version 1.0 15.04.20
+ */
+package NTNU.IDATT1002;
\ No newline at end of file
diff --git a/src/main/java/NTNU/IDATT1002/repository/AbstractRepository.java b/src/main/java/NTNU/IDATT1002/repository/AbstractRepository.java
index ee20d30b39135feefb3776a5b4d029eb4300bb43..6d2b9762cbb5d4ba35c01a3d01442e893720c84b 100644
--- a/src/main/java/NTNU/IDATT1002/repository/AbstractRepository.java
+++ b/src/main/java/NTNU/IDATT1002/repository/AbstractRepository.java
@@ -19,7 +19,7 @@ import java.util.Optional;
  * @author Eirik Steira
  * @version 1.1 03.04.20
  */
-abstract class AbstractRepository<T, ID> implements Repository<T, ID> {
+public abstract class AbstractRepository<T, ID> implements Repository<T, ID> {
 
     /**
      * The type of class which implementations of this class is to operate on.
diff --git a/src/main/java/NTNU/IDATT1002/repository/package-info.java b/src/main/java/NTNU/IDATT1002/repository/package-info.java
new file mode 100644
index 0000000000000000000000000000000000000000..dd3cd358a4f975f28dc79e4f9ba10419de366bcb
--- /dev/null
+++ b/src/main/java/NTNU/IDATT1002/repository/package-info.java
@@ -0,0 +1,6 @@
+/**
+ * DAO classes defined as repositories for persisting data.
+ * {@link NTNU.IDATT1002.repository.AbstractRepository} implements default behaviour
+ * and is easily extendable.
+ */
+package NTNU.IDATT1002.repository;
\ No newline at end of file
diff --git a/src/main/java/NTNU/IDATT1002/service/AlbumDocument.java b/src/main/java/NTNU/IDATT1002/service/AlbumDocument.java
index 5eb0533d8f185226ed221351ab56c310d605607c..2984aa2d019bddd2f492cda98482a7365a85b5db 100644
--- a/src/main/java/NTNU/IDATT1002/service/AlbumDocument.java
+++ b/src/main/java/NTNU/IDATT1002/service/AlbumDocument.java
@@ -10,8 +10,16 @@ import java.io.File;
  */
 public interface AlbumDocument {
 
+    /**
+     * Get the created document.
+     *
+     * @return the document as a file
+     */
     File getDocument();
 
+    /**
+     * Create the document.
+     */
     void create();
 
 }
diff --git a/src/main/java/NTNU/IDATT1002/service/package-info.java b/src/main/java/NTNU/IDATT1002/service/package-info.java
new file mode 100644
index 0000000000000000000000000000000000000000..19263bfb49f475464c2481684414bfc1c5c7f7cd
--- /dev/null
+++ b/src/main/java/NTNU/IDATT1002/service/package-info.java
@@ -0,0 +1,5 @@
+/**
+ * Service classes providing high level behaviour,
+ * connecting the controllers with the business logic.
+ */
+package NTNU.IDATT1002.service;
\ No newline at end of file