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/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;