diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/database/mysql/VereinfachtesResultSet.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/database/mysql/VereinfachtesResultSet.java
index ff270f7b46d23457b3742b15596a296d9a99179e..972fffd8d5bb466aca534bc0e0682a2cdbbccf8b 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/database/mysql/VereinfachtesResultSet.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/database/mysql/VereinfachtesResultSet.java
@@ -11,6 +11,30 @@ public class VereinfachtesResultSet {
 
 	private ResultSet resultSet;
 
+	/**
+	 * creates a more verbose error message that actually tells you whats wrong
+	 * @param columnLabel
+	 * @return
+	 */
+	private String errorMessage(String columnLabel){
+		return String.format(
+			"error in VereinfachtesResultSet: Spalte %s konnte nicht gefunden werden",
+			columnLabel
+		);
+	}
+
+	/**
+	 * creates a more verbose error message that actually tells you whats wrong
+	 * @param columnIndex
+	 * @return
+	 */
+	private String errorMessage(int columnIndex){
+		return String.format(
+			"error in VereinfachtesResultSet: Zeile %d konnte nicht gefunden werden",
+			columnIndex
+		);
+	}
+
 	public VereinfachtesResultSet(ResultSet resultset) {
 		if (resultset == null) {
 			throw new Error("kein Resultset");
@@ -34,7 +58,7 @@ public class VereinfachtesResultSet {
 		} catch (SQLException ex) {
 			System.err.println(ex.getMessage());
 		}
-		throw new Error("error in VereinfachtesResultSet");
+		throw new Error(errorMessage(columnIndex));
 	}
 
 	public float getFloat(int columnIndex) {
@@ -43,7 +67,7 @@ public class VereinfachtesResultSet {
 		} catch (SQLException ex) {
 			System.err.println(ex.getMessage());
 		}
-		throw new Error("error in VereinfachtesResultSet");
+		throw new Error(errorMessage(columnIndex));
 	}
 
 	public double getDouble(int columnIndex) {
@@ -52,7 +76,7 @@ public class VereinfachtesResultSet {
 		} catch (SQLException ex) {
 			System.err.println(ex.getMessage());
 		}
-		throw new Error("error in VereinfachtesResultSet");
+		throw new Error(errorMessage(columnIndex));
 	}
 
 
@@ -62,7 +86,7 @@ public class VereinfachtesResultSet {
 		} catch (SQLException ex) {
 			System.err.println(ex.getMessage());
 		}
-		throw new Error("error in VereinfachtesResultSet");
+		throw new Error(errorMessage(columnIndex));
 	}
 
 
@@ -72,7 +96,7 @@ public class VereinfachtesResultSet {
 		} catch (SQLException ex) {
 			System.err.println(ex.getMessage());
 		}
-		throw new Error("error in VereinfachtesResultSet");
+		throw new Error(errorMessage(columnIndex));
 	}
 
     public Timestamp getTimestamp(String columnLabel) {
@@ -81,7 +105,7 @@ public class VereinfachtesResultSet {
         } catch (SQLException ex) {
             System.err.println(ex.getMessage());
         }
-        throw new Error("error in VereinfachtesResultSet");
+        throw new Error(errorMessage(columnLabel));
     }
 
 
@@ -91,7 +115,7 @@ public class VereinfachtesResultSet {
 		} catch (SQLException ex) {
 			System.err.println(ex.getMessage());
 		}
-		throw new Error("error in VereinfachtesResultSet");
+		throw new Error(errorMessage(columnLabel));
 	}
 
 	public boolean getBoolean(String columnLabel) {
@@ -100,7 +124,7 @@ public class VereinfachtesResultSet {
 		} catch (SQLException ex) {
 			System.err.println(ex.getMessage());
 		}
-		throw new Error("error in VereinfachtesResultSet");
+		throw new Error(errorMessage(columnLabel));
 	}
 
 	public int getInt(String columnLabel) {
@@ -109,7 +133,7 @@ public class VereinfachtesResultSet {
 		} catch (SQLException ex) {
 			System.err.println(ex.getMessage());
 		}
-		throw new Error("error in VereinfachtesResultSet");
+		throw new Error(errorMessage(columnLabel));
 	}
 
 	public long getLong(String columnLabel) {
@@ -118,7 +142,7 @@ public class VereinfachtesResultSet {
 		} catch (SQLException ex) {
 			System.err.println(ex.getMessage());
 		}
-		throw new Error("error in VereinfachtesResultSet");
+		throw new Error(errorMessage(columnLabel));
 	}
 
 	public float getFloat(String columnLabel) {
@@ -127,7 +151,7 @@ public class VereinfachtesResultSet {
 		} catch (SQLException ex) {
 			System.err.println(ex.getMessage());
 		}
-		throw new Error("error in VereinfachtesResultSet");
+		throw new Error(errorMessage(columnLabel));
 	}
 
 	public double getDouble(String columnLabel) {
@@ -136,7 +160,7 @@ public class VereinfachtesResultSet {
 		} catch (SQLException ex) {
 			System.err.println(ex.getMessage());
 		}
-		throw new Error("error in VereinfachtesResultSet");
+		throw new Error(errorMessage(columnLabel));
 	}
 
 	public ResultSetMetaData getMetaData() {
@@ -154,7 +178,7 @@ public class VereinfachtesResultSet {
 		} catch (SQLException ex) {
 			System.err.println(ex.getMessage());
 		}
-		throw new Error("error in VereinfachtesResultSet");
+		throw new Error(errorMessage(columnIndex));
 	}
 
 	public Object getObject(String columnLabel) {
@@ -163,7 +187,7 @@ public class VereinfachtesResultSet {
 		} catch (SQLException ex) {
 			System.err.println(ex.getMessage());
 		}
-		throw new Error("error in VereinfachtesResultSet");
+		throw new Error(errorMessage(columnLabel));
 	}
 
 	public int findColumn(String columnLabel) {
@@ -172,7 +196,7 @@ public class VereinfachtesResultSet {
 		} catch (SQLException ex) {
 			System.err.println(ex.getMessage());
 		}
-		throw new Error("error in VereinfachtesResultSet");
+		throw new Error(errorMessage(columnLabel));
 	}
 
 	public boolean isBeforeFirst() {
diff --git a/gemeinsamforschen/src/main/webapp/assets/js/createJournal.js b/gemeinsamforschen/src/main/webapp/assets/js/createJournal.js
index 96130eb0a3e13aefa384e29a4eda8129f32faf4d..7a5dba5aafdd669caacaef14fc31b945f8665016 100644
--- a/gemeinsamforschen/src/main/webapp/assets/js/createJournal.js
+++ b/gemeinsamforschen/src/main/webapp/assets/js/createJournal.js
@@ -10,6 +10,10 @@ function getQueryVariable(variable)
 }
 
 $(document).ready(function() {
+    $('#backLink').on('click', function(){
+        location.href="eportfolio.jsp?token="+getUserTokenFromUrl();
+    });
+
     var journalID = getQueryVariable("journal");
     console.log(journalID);
     if(journalID){
diff --git a/gemeinsamforschen/src/main/webapp/assets/js/e-portfolio.js b/gemeinsamforschen/src/main/webapp/assets/js/e-portfolio.js
index 1969dcd03c16d28d19b42958c122f8d8d0425689..658ed766e9a605fa961f40420cebbfeeeee51e4d 100644
--- a/gemeinsamforschen/src/main/webapp/assets/js/e-portfolio.js
+++ b/gemeinsamforschen/src/main/webapp/assets/js/e-portfolio.js
@@ -1,6 +1,15 @@
 //TODO Get student and project form context
 
 $(document).ready(function() {
+    $('#editDescriptionLink').on('click', function(){
+        /*TODO getJournal*/
+        location.href="editDescription.jsp?project=0&token="+getUserTokenFromUrl();
+    });
+
+    $('#createJournalLink').on('click', function(){
+        location.href="createJournal.jsp?token="+getUserTokenFromUrl();
+    });
+
     $.ajax({
         url: "../rest/projectdescription/0"
     }).then(function(data) {
@@ -64,7 +73,7 @@ function loadJournals(data) {
                     data[journal].category +
                 '</div>' +
                 '<div class="journal-edit" align="right">' +
-                    '<a class="btn btn-default btn-sm" href="createJournal.jsp?token=test&journal=' + data[journal].id + '"><i class="fa fa-pencil"></i> Bearbeiten</a>' +
+                    '<a class="btn btn-default btn-sm" href="createJournal.jsp?token='+getUserTokenFromUrl()+'&journal=' + data[journal].id + '"><i class="fa fa-pencil"></i> Bearbeiten</a>' +
                     '<a class="btn btn-default btn-sm" data-toggle="modal" data-target="#closeJournalModal"><i class="fa fa-check-square" aria-hidden="true"></i>Abschlie&szlig;en</a>' +
                 '</div>' +
                 '<div class="journal-text">' +
diff --git a/gemeinsamforschen/src/main/webapp/assets/js/editDescription.js b/gemeinsamforschen/src/main/webapp/assets/js/editDescription.js
index b6f6a893ac478a012bb160ea8854b0d38f38a46f..77eeb04452f089e8369c9b75875eaa3ee2fe4b8b 100644
--- a/gemeinsamforschen/src/main/webapp/assets/js/editDescription.js
+++ b/gemeinsamforschen/src/main/webapp/assets/js/editDescription.js
@@ -1,4 +1,8 @@
 $(document).ready(function() {
+    $('#backLink').on('click', function(){
+        location.href="eportfolio.jsp?token="+getUserTokenFromUrl();
+    });
+
     $.ajax({
         url: "../rest/projectdescription/0"
         }).then(function(data) {
diff --git a/gemeinsamforschen/src/main/webapp/pages/createJournal.jsp b/gemeinsamforschen/src/main/webapp/pages/createJournal.jsp
index 1edabf9631499d60bb0966743de7bdcbecc6a19a..ac3da978546d0d608c6fcd1d99595ce45592035f 100644
--- a/gemeinsamforschen/src/main/webapp/pages/createJournal.jsp
+++ b/gemeinsamforschen/src/main/webapp/pages/createJournal.jsp
@@ -13,6 +13,7 @@
 	<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
 	<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
 	<script src="https://cdn.jsdelivr.net/npm/inscrybmde@1.11.3/dist/inscrybmde.min.js"></script>
+	<script src="../assets/js/utility.js"></script>
 	<link rel="stylesheet" href="../assets/fonts/font-awesome.min.css">
 	<link rel="stylesheet" href="../assets/css/Community-ChatComments.css">
 	<link rel="stylesheet" href="../assets/css/Sidebar-Menu-1.css">
@@ -82,7 +83,7 @@
 
 								<div class="journal-form-buttons">
 									<input class="btn btn-default btn-sm" type="submit">
-									<a class="btn btn-default btn-sm" href="eportfolio.jsp?token=test"> Zur&uuml;ck </a>
+									<a id="backLink" class="btn btn-default btn-sm"> Zur&uuml;ck </a>
 								</div>
 
 							</div>
diff --git a/gemeinsamforschen/src/main/webapp/pages/editDescription.jsp b/gemeinsamforschen/src/main/webapp/pages/editDescription.jsp
index 664220c7710c7890eb7d2ef947206ee27030e80a..1113922a4f20be7a8a92d2d5689be1ded6c64c08 100644
--- a/gemeinsamforschen/src/main/webapp/pages/editDescription.jsp
+++ b/gemeinsamforschen/src/main/webapp/pages/editDescription.jsp
@@ -13,6 +13,7 @@
     <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
     <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
     <script src="https://cdn.jsdelivr.net/npm/inscrybmde@1.11.3/dist/inscrybmde.min.js"></script>
+    <script src="../assets/js/utility.js"></script>
     <link rel="stylesheet" href="../assets/fonts/font-awesome.min.css">
     <link rel="stylesheet" href="../assets/css/Community-ChatComments.css">
     <link rel="stylesheet" href="../assets/css/Sidebar-Menu-1.css">
@@ -56,7 +57,7 @@
 
                                 <div class="description-form-buttons">
                                     <input class="btn btn-default btn-sm" type="submit">
-                                    <a class="btn btn-default btn-sm" href="eportfolio.jsp?token=test">Zur&uuml;ck</a>
+                                    <a id="backLink" class="btn btn-default btn-sm">Zur&uuml;ck</a>
                                 </div>
 
                             </div>
diff --git a/gemeinsamforschen/src/main/webapp/pages/eportfolio.jsp b/gemeinsamforschen/src/main/webapp/pages/eportfolio.jsp
index 08e452126196eb62a4588ecf857858073fef91bc..9b8c7327608fa000855677daa9af7c1e62a1619e 100644
--- a/gemeinsamforschen/src/main/webapp/pages/eportfolio.jsp
+++ b/gemeinsamforschen/src/main/webapp/pages/eportfolio.jsp
@@ -9,13 +9,15 @@
     <title>E-Portfolio</title>
     <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
     <link rel="stylesheet" href="../assets/css/styles.css">
-    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
-    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
     <link rel="stylesheet" href="../assets/fonts/font-awesome.min.css">
     <link rel="stylesheet" href="../assets/css/Community-ChatComments.css">
     <link rel="stylesheet" href="../assets/css/Sidebar-Menu-1.css">
     <link rel="stylesheet" href="../assets/css/Sidebar-Menu.css">
     <link rel="stylesheet" href="../assets/css/e-portfolio.css">
+    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
+    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
+    <script src="../assets/js/utility.js"></script>
+
 </head>
 
 <body>
@@ -51,7 +53,7 @@
                                     <div class="journal-description-title">
                                     </div>
                                     <div class="journal-description-edit" align="right">
-                                        <a class="btn btn-default btn-sm" href="editDescription.jsp?project=0&token=test">
+                                        <a id="editDescriptionLink" class="btn btn-default btn-sm">
                                             <i class="fa fa-pencil"></i> Bearbeiten</a>
                                         <a class="btn btn-default btn-sm" data-toggle="modal" data-target="#closeDescriptionModal"><i class="fa fa-check-square" aria-hidden="true"></i>Abschlie&szlig;en</a>
 
@@ -70,14 +72,14 @@
                             </div>
 
                             <div id="journal-container" class="tab-pane fade">
-                                    <h2>Lernatagebuch</h2>
+                                    <h2>Lerntagebuch</h2>
                                     <div class="input-group">
                                     <select id="journalfilter" class="form-control" style="width:auto;" onchange="filterJournals()">
                                         <option value="ALL">Alle</option>
                                         <option value="OWN">Eigene</option>
                                     </select>
 
-                                    <a class="btn btn-default btn-sm" href="createJournal.jsp?token=test">Neu</a>
+                                    <a id="createJournalLink"class="btn btn-default btn-sm" >Neu</a>
                                 </div>
                                 <div class="journal">
                                 </div>
diff --git a/gemeinsamforschen/src/scripts/dbschema/setup_gamification.sql b/gemeinsamforschen/src/scripts/dbschema/setup_gamification.sql
new file mode 100644
index 0000000000000000000000000000000000000000..334349f1461a71d36467eb5d032ede7b88c2bfb7
--- /dev/null
+++ b/gemeinsamforschen/src/scripts/dbschema/setup_gamification.sql
@@ -0,0 +1,58 @@
+-- This script initializes tables to be used for gamification
+
+CREATE DATABASE IF NOT EXISTS `fltrail`
+  DEFAULT CHARACTER SET utf8
+  COLLATE utf8_general_ci;
+USE `fltrail`;
+
+---- events
+-- events can be
+--  * writing a comment
+--  * taking a quiz
+--  * creating a quiz
+--  * adding a part of the journal
+--  * completing the journal
+--  * doing peer assessment (actively and passively)
+CREATE TABLE if not exists events
+(
+  eventId     varchar(400) NOT NULL,
+  eventType   varchar(400) NOT NULL,
+  studentId   varchar(400) NOT NULL,
+  projectId   varchar(400) NOT NULL,
+  title       varchar(400) NOT NULL,
+  description varchar(400) NOT NULL
+)
+  ENGINE = InnoDB
+  DEFAULT CHARSET = utf8;
+
+---- tasks
+-- a task is something a student is obliged to do, such as
+--  * uploading parts of the journal
+--  * completing the journal
+--  * giving at least one feedback to another student
+--  * absolving peer assessment
+
+CREATE TABLE if not exists tasks
+(
+  taskId     varchar(400) NOT NULL,
+  taskType   varchar(400) NOT NULL,
+  projectId   varchar(400) NOT NULL,
+  title       varchar(400) NOT NULL,
+  description varchar(400) NOT NULL,
+  state       varchar(400) NOT NULL -- should be "open" or "closed"
+)
+  ENGINE = InnoDB
+  DEFAULT CHARSET = utf8;
+
+--- achievements
+CREATE TABLE if not exists achievements
+(
+  author varchar(400) NOT NULL,
+  projectId varchar(400) NOT NULL,
+  question varchar(400) NOT NULL,
+  mcType varchar(400) NOT NULL,
+  answer varchar(400) NOT NULL,
+  correct tinyint(1) NOT NULL
+)
+  ENGINE = InnoDB
+  DEFAULT CHARSET = utf8;