diff --git a/.gitignore b/.gitignore
index 21782104a6b70584acfe9c8abc092a1446f6c074..2c0bec3c9dca32efe6064b2203aeefe09c340116 100644
--- a/.gitignore
+++ b/.gitignore
@@ -19,3 +19,5 @@
 **/.classpath
 /.idea/vcs.xml
 /.idea/workspace.xml
+
+**/.idea
\ No newline at end of file
diff --git a/.gitignore.orig b/.gitignore.orig
new file mode 100644
index 0000000000000000000000000000000000000000..6edc488f16834fb336f66f6e7d6739d059a799fa
--- /dev/null
+++ b/.gitignore.orig
@@ -0,0 +1,26 @@
+/.idea/.name
+/.idea/compiler.xml
+/.idea/copyright/profiles_settings.xml
+/.idea/dataSources.ids
+/.idea/dataSources.local.xml
+/.idea/dataSources.xml
+/.idea/deployment.xml
+/.idea/encodings.xml
+/.idea/misc.xml
+/.idea/modules.xml
+/.idea/sqldialects.xml
+**/*.iml
+**/workspace.xml
+/gemeinsamforschen/**/.idea/*
+/gemeinsamforschen/**/out
+/gemeinsamforschen/**/target
+/gemeinsamforschen/**/.settings
+**/.project
+**/.classpath
+/.idea/vcs.xml
+/.idea/workspace.xml
+<<<<<<< HEAD
+**/.idea
+=======
+/.idea/workspace.xml
+>>>>>>> PeerAssessmentAxel
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
deleted file mode 100644
index 03d62d167dc479a2cbe39237d40f9d6e78e67321..0000000000000000000000000000000000000000
--- a/.idea/workspace.xml
+++ /dev/null
@@ -1,729 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
-  <component name="ChangeListManager">
-    <list default="true" id="b207c042-3fc9-4102-bf50-ee6c9b45c20d" name="Default" comment="">
-      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/workspace.xml" afterPath="$PROJECT_DIR$/.idea/workspace.xml" />
-      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/IPeerAssessment.java" afterPath="$PROJECT_DIR$/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/IPeerAssessment.java" />
-    </list>
-    <ignored path="fltrail.iws" />
-    <ignored path=".idea/workspace.xml" />
-    <ignored path="$PROJECT_DIR$/out/" />
-    <ignored path=".idea/dataSources.local.xml" />
-    <option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
-    <option name="TRACKING_ENABLED" value="true" />
-    <option name="SHOW_DIALOG" value="false" />
-    <option name="HIGHLIGHT_CONFLICTS" value="true" />
-    <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
-    <option name="LAST_RESOLUTION" value="IGNORE" />
-  </component>
-  <component name="CreatePatchCommitExecutor">
-    <option name="PATCH_PATH" value="" />
-  </component>
-  <component name="DatabaseView">
-    <option name="SHOW_INTERMEDIATE" value="true" />
-    <option name="GROUP_SCHEMA" value="true" />
-    <option name="GROUP_CONTENTS" value="false" />
-    <option name="SORT_POSITIONED" value="false" />
-    <option name="SHOW_TABLE_DETAILS" value="true" />
-    <option name="SHOW_EMPTY_GROUPS" value="false" />
-    <option name="AUTO_SCROLL_FROM_SOURCE" value="false" />
-  </component>
-  <component name="ExecutionTargetManager" SELECTED_TARGET="default_target" />
-  <component name="FavoritesManager">
-    <favorites_list name="fltrail" />
-  </component>
-  <component name="FileEditorManager">
-    <leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
-      <file leaf-file-name="ResearchReport.java" pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/ResearchReport.java">
-          <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="693">
-              <caret line="33" column="39" lean-forward="false" selection-start-line="33" selection-start-column="39" selection-end-line="33" selection-end-column="39" />
-              <folding />
-            </state>
-          </provider>
-        </entry>
-      </file>
-      <file leaf-file-name="projects.php" pinned="false" current-in-tab="true">
-        <entry file="file://$PROJECT_DIR$/studentview/pages/projects.php">
-          <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="21">
-              <caret line="125" column="34" lean-forward="false" selection-start-line="125" selection-start-column="34" selection-end-line="125" selection-end-column="34" />
-              <folding />
-            </state>
-          </provider>
-        </entry>
-      </file>
-      <file leaf-file-name="showProjects.js" pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/studentview/assets/js/showProjects.js">
-          <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="651">
-              <caret line="31" column="38" lean-forward="false" selection-start-line="31" selection-start-column="38" selection-end-line="31" selection-end-column="38" />
-              <folding />
-            </state>
-          </provider>
-        </entry>
-      </file>
-      <file leaf-file-name="overview.js" pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/studentview/assets/js/overview.js">
-          <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="1806">
-              <caret line="86" column="0" lean-forward="false" selection-start-line="86" selection-start-column="0" selection-end-line="86" selection-end-column="0" />
-              <folding />
-            </state>
-          </provider>
-        </entry>
-      </file>
-    </leaf>
-  </component>
-  <component name="FileTemplateManagerImpl">
-    <option name="RECENT_TEMPLATES">
-      <list>
-        <option value="CSS File" />
-        <option value="JavaScript File" />
-      </list>
-    </option>
-  </component>
-  <component name="Git.Settings">
-    <option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
-    <option name="RECENT_BRANCH_BY_REPOSITORY">
-      <map>
-        <entry key="$PROJECT_DIR$" value="master" />
-      </map>
-    </option>
-  </component>
-  <component name="GradleLocalSettings">
-    <option name="externalProjectsViewState">
-      <projects_view />
-    </option>
-  </component>
-  <component name="IdeDocumentHistory">
-    <option name="CHANGED_PATHS">
-      <list>
-        <option value="$USER_HOME$/php/php.ini" />
-        <option value="$PROJECT_DIR$/studentview/database/getProjects.php" />
-        <option value="$PROJECT_DIR$/studentview/database/getProjectsOfAuthor.php" />
-        <option value="$PROJECT_DIR$/studentview/assets/css/projects.css" />
-        <option value="$APPLICATION_CONFIG_DIR$/consoles/db/14340c2c-ac4b-492f-ac4f-18c0853598a8/console_1.sql" />
-        <option value="$PROJECT_DIR$/studentview/database/deleteProject.php" />
-        <option value="$PROJECT_DIR$/studentview/assets/js/getProjects.js" />
-        <option value="$PROJECT_DIR$/studentview/database/createUser.php" />
-        <option value="$PROJECT_DIR$/studentview/assets/css/Sidebar-Menu1.css" />
-        <option value="$PROJECT_DIR$/studentview/database/tokenSetter.php" />
-        <option value="$PROJECT_DIR$/studentview/pages/menu.php" />
-        <option value="dbtable:/fc3764cf/14340c2c-ac4b-492f-ac4f-18c0853598a8/fltrail.projects" />
-        <option value="$PROJECT_DIR$/studentview/assets/css/styles.css" />
-        <option value="$PROJECT_DIR$/dbschema/fltrail.sql" />
-        <option value="$PROJECT_DIR$/dbschema/createDummyUser.sql" />
-        <option value="$PROJECT_DIR$/studentview/database/getAdresses.php" />
-        <option value="$PROJECT_DIR$/studentview/pages/mygroups.php" />
-        <option value="$PROJECT_DIR$/studentview/assets/js/myGroupsInit.js" />
-        <option value="$PROJECT_DIR$/studentview/assets/js/createPreferences.js" />
-        <option value="$PROJECT_DIR$/studentview/assets/js/deleteProject.js" />
-        <option value="$PROJECT_DIR$/studentview/assets/js/newProject.js" />
-        <option value="$PROJECT_DIR$/studentview/pages/deleteProject.php" />
-        <option value="$PROJECT_DIR$/studentview/pages/enrollment.php" />
-        <option value="$PROJECT_DIR$/studentview/pages/newproject.php" />
-        <option value="$PROJECT_DIR$/studentview/pages/projects.php" />
-        <option value="$PROJECT_DIR$/studentview/register.php" />
-        <option value="$PROJECT_DIR$/studentview/pages/preferences.php" />
-        <option value="$PROJECT_DIR$/studentview/assets/js/config.js" />
-        <option value="$PROJECT_DIR$/studentview/database/config.php" />
-        <option value="$PROJECT_DIR$/studentview/assets/js/overview.js" />
-        <option value="$PROJECT_DIR$/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/ResearchReport.java" />
-      </list>
-    </option>
-  </component>
-  <component name="JsBuildToolGruntFileManager" detection-done="true" sorting="DEFINITION_ORDER" />
-  <component name="JsBuildToolPackageJson" detection-done="true" sorting="DEFINITION_ORDER" />
-  <component name="JsGulpfileManager">
-    <detection-done>true</detection-done>
-    <sorting>DEFINITION_ORDER</sorting>
-  </component>
-  <component name="PhpDebugGeneral" notify_if_session_was_finished_without_being_paused="false" />
-  <component name="PhpServers">
-    <servers>
-      <server host="localhost/fltrail/studentview" id="0689838e-2d6d-4149-9413-e6535e936a72" name="Localhost">
-        <path_mappings>
-          <mapping local-root="$PROJECT_DIR$" remote-root="/fltrail/studentview" />
-        </path_mappings>
-      </server>
-      <server host="localhost" id="75f2248a-2fea-4485-9fd7-0dc130516437" name="localhost" />
-      <server host="141.89.159.250" id="a7129b24-16e0-4988-abb2-c07e26d5f743" name="141.89.159.250" port="443" use_path_mappings="true">
-        <path_mappings>
-          <mapping local-root="$PROJECT_DIR$/studentview" remote-root="C:/dev/amp/htdocs" />
-        </path_mappings>
-      </server>
-    </servers>
-  </component>
-  <component name="PhpWebServerValidation" path_to_validation_script="C:\dev\amp\htdocs\" selected_validation_type="LOCAL" web_path_to_validation_script="http://127.0.0.1/" />
-  <component name="PhpWorkspaceProjectConfiguration" backward_compatibility_performed="true" interpreter_name="PHP" />
-  <component name="ProjectFrameBounds">
-    <option name="x" value="-9" />
-    <option name="y" value="-9" />
-    <option name="width" value="1938" />
-    <option name="height" value="1050" />
-  </component>
-  <component name="ProjectLevelVcsManager" settingsEditedManually="true" />
-  <component name="ProjectView">
-    <navigator currentView="ProjectPane" proportions="" version="1">
-      <flattenPackages />
-      <showMembers />
-      <showModules />
-      <showLibraryContents />
-      <hideEmptyPackages ProjectPane="true" />
-      <abbreviatePackageNames />
-      <autoscrollToSource />
-      <autoscrollFromSource />
-      <sortByType />
-      <manualOrder />
-      <foldersAlwaysOnTop value="true" />
-    </navigator>
-    <panes>
-      <pane id="ProjectPane">
-        <subPane>
-          <PATH>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="fltrail" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="fltrail" />
-              <option name="myItemType" value="com.jetbrains.php.projectView.PhpTreeStructureProvider$1" />
-            </PATH_ELEMENT>
-          </PATH>
-          <PATH>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="fltrail" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="fltrail" />
-              <option name="myItemType" value="com.jetbrains.php.projectView.PhpTreeStructureProvider$1" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="studentview" />
-              <option name="myItemType" value="com.jetbrains.php.projectView.PhpTreeStructureProvider$1" />
-            </PATH_ELEMENT>
-          </PATH>
-          <PATH>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="fltrail" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="fltrail" />
-              <option name="myItemType" value="com.jetbrains.php.projectView.PhpTreeStructureProvider$1" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="studentview" />
-              <option name="myItemType" value="com.jetbrains.php.projectView.PhpTreeStructureProvider$1" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="pages" />
-              <option name="myItemType" value="com.jetbrains.php.projectView.PhpTreeStructureProvider$1" />
-            </PATH_ELEMENT>
-          </PATH>
-          <PATH>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="fltrail" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="fltrail" />
-              <option name="myItemType" value="com.jetbrains.php.projectView.PhpTreeStructureProvider$1" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="studentview" />
-              <option name="myItemType" value="com.jetbrains.php.projectView.PhpTreeStructureProvider$1" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="assets" />
-              <option name="myItemType" value="com.jetbrains.php.projectView.PhpTreeStructureProvider$1" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="js" />
-              <option name="myItemType" value="com.jetbrains.php.projectView.PhpTreeStructureProvider$1" />
-            </PATH_ELEMENT>
-          </PATH>
-          <PATH>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="fltrail" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="fltrail" />
-              <option name="myItemType" value="com.jetbrains.php.projectView.PhpTreeStructureProvider$1" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="studentview" />
-              <option name="myItemType" value="com.jetbrains.php.projectView.PhpTreeStructureProvider$1" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="assets" />
-              <option name="myItemType" value="com.jetbrains.php.projectView.PhpTreeStructureProvider$1" />
-            </PATH_ELEMENT>
-          </PATH>
-        </subPane>
-      </pane>
-      <pane id="Scratches" />
-      <pane id="Scope" />
-      <pane id="PackagesPane" />
-      <pane id="AndroidView" />
-    </panes>
-  </component>
-  <component name="PropertiesComponent">
-    <property name="aspect.path.notification.shown" value="true" />
-    <property name="WebServerToolWindowFactoryState" value="true" />
-    <property name="js-jscs-nodeInterpreter" value="C:\Program Files\nodejs\node.exe" />
-    <property name="settings.editor.selected.configurable" value="database.main" />
-    <property name="settings.editor.splitter.proportion" value="0.2" />
-    <property name="last_opened_file_path" value="$PROJECT_DIR$/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces" />
-    <property name="list.type.of.created.stylesheet" value="CSS" />
-    <property name="SearchEverywhereHistoryKey" value="&#9;FILE&#9;dbDummy://dbtable:/fc3764cf/14340c2c-ac4b-492f-ac4f-18c0853598a8/fltrail.users" />
-  </component>
-  <component name="RecentsManager">
-    <key name="CopyFile.RECENT_KEYS">
-      <recent name="C:\Users\quark\IdeaProjects\fltrail\gemeinsamforschen\src\main\java\unipotsdam\gf\interfaces" />
-      <recent name="C:\dev\amp\htdocs\fltrail\studentview\pages" />
-    </key>
-  </component>
-  <component name="RunDashboard">
-    <option name="ruleStates">
-      <list>
-        <RuleState>
-          <option name="name" value="ConfigurationTypeDashboardGroupingRule" />
-        </RuleState>
-        <RuleState>
-          <option name="name" value="StatusDashboardGroupingRule" />
-        </RuleState>
-      </list>
-    </option>
-  </component>
-  <component name="RunManager">
-    <configuration default="true" type="JavascriptDebugType" factoryName="JavaScript Debug">
-      <method />
-    </configuration>
-    <configuration default="true" type="PHPUnitRunConfigurationType" factoryName="PHPUnit">
-      <TestRunner />
-      <method />
-    </configuration>
-    <configuration default="true" type="PhpLocalRunConfigurationType" factoryName="PHP Console">
-      <method />
-    </configuration>
-    <configuration default="true" type="PhpWebAppRunConfigurationType" factoryName="PHP Web Application" server_name="Localhost">
-      <method />
-    </configuration>
-    <configuration default="true" type="js.build_tools.gulp" factoryName="Gulp.js">
-      <node-interpreter>project</node-interpreter>
-      <node-options />
-      <gulpfile />
-      <tasks />
-      <arguments />
-      <envs />
-      <method />
-    </configuration>
-    <configuration default="true" type="js.build_tools.npm" factoryName="npm">
-      <command value="run" />
-      <scripts />
-      <node-interpreter value="project" />
-      <envs />
-      <method />
-    </configuration>
-    <configuration default="false" name="phpserver" type="PhpWebAppRunConfigurationType" factoryName="PHP Web Application" server_name="Localhost" start_url="/index.php">
-      <method />
-    </configuration>
-    <configuration default="false" name="test" type="PhpWebAppRunConfigurationType" factoryName="PHP Web Application" server_name="Localhost" start_url="/test.php">
-      <method />
-    </configuration>
-    <list size="2">
-      <item index="0" class="java.lang.String" itemvalue="PHP Web Application.phpserver" />
-      <item index="1" class="java.lang.String" itemvalue="PHP Web Application.test" />
-    </list>
-  </component>
-  <component name="SbtLocalSettings">
-    <option name="externalProjectsViewState">
-      <projects_view />
-    </option>
-  </component>
-  <component name="ShelveChangesManager" show_recycled="false">
-    <option name="remove_strategy" value="false" />
-  </component>
-  <component name="SvnConfiguration">
-    <configuration />
-  </component>
-  <component name="TaskManager">
-    <task active="true" id="Default" summary="Default task">
-      <changelist id="b207c042-3fc9-4102-bf50-ee6c9b45c20d" name="Default" comment="" />
-      <created>1522142632208</created>
-      <option name="number" value="Default" />
-      <option name="presentableId" value="Default" />
-      <updated>1522142632208</updated>
-      <workItem from="1522142635858" duration="32910000" />
-      <workItem from="1522918322507" duration="37691000" />
-      <workItem from="1524484938943" duration="3356000" />
-      <workItem from="1524585513713" duration="57000" />
-      <workItem from="1528200793936" duration="888000" />
-      <workItem from="1528354427057" duration="403000" />
-    </task>
-    <servers />
-  </component>
-  <component name="TimeTrackingManager">
-    <option name="totallyTimeSpent" value="75305000" />
-  </component>
-  <component name="ToolWindowManager">
-    <frame x="-9" y="-9" width="1938" height="1050" extended-state="6" />
-    <layout>
-      <window_info id="Remote Host" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="11" side_tool="false" content_ui="tabs" />
-      <window_info id="Project" active="true" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.2125" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" x="9" y="79" width="408" height="943" />
-      <window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
-      <window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.23455825" sideWeight="0.47734374" order="8" side_tool="true" content_ui="tabs" />
-      <window_info id="Database" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.15729167" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
-      <window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="10" side_tool="false" content_ui="tabs" />
-      <window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.35496482" sideWeight="0.71510416" order="2" side_tool="false" content_ui="tabs" />
-      <window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
-      <window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="9" side_tool="false" content_ui="tabs" />
-      <window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="5" side_tool="true" content_ui="tabs" />
-      <window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.331509" sideWeight="0.52265626" order="3" side_tool="false" content_ui="tabs" />
-      <window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
-      <window_info id="Palette" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
-      <window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
-      <window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
-      <window_info id="Application Servers" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.3297062" sideWeight="0.5" order="11" side_tool="false" content_ui="tabs" />
-      <window_info id="Maven Projects" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
-      <window_info id="Capture Tool" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
-      <window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="5" side_tool="false" content_ui="combo" />
-      <window_info id="Designer" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="8" side_tool="false" content_ui="tabs" />
-      <window_info id="JSF" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="9" side_tool="false" content_ui="tabs" />
-      <window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
-      <window_info id="UI Designer" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
-      <window_info id="Messages" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.36247173" sideWeight="0.57851565" order="7" side_tool="false" content_ui="tabs" />
-      <window_info id="Palette&#9;" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
-      <window_info id="Image Layers" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
-      <window_info id="Java Enterprise" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="12" side_tool="false" content_ui="tabs" />
-      <window_info id="Capture Analysis" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
-      <window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
-      <window_info id="Sequence" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.45516202" sideWeight="0.5" order="13" side_tool="false" content_ui="tabs" />
-      <window_info id="Database Console" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32994527" sideWeight="0.4984375" order="14" side_tool="false" content_ui="tabs" />
-      <window_info id="Bean Validation" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="10" side_tool="false" content_ui="tabs" />
-      <window_info id="Web" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="6" side_tool="true" content_ui="tabs" />
-      <window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.2736513" sideWeight="0.6203125" order="1" side_tool="false" content_ui="tabs" />
-      <window_info id="Theme Preview" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
-    </layout>
-  </component>
-  <component name="TypeScriptGeneratedFilesManager">
-    <option name="processedProjectFiles" value="true" />
-  </component>
-  <component name="Vcs.Log.UiProperties">
-    <option name="RECENTLY_FILTERED_USER_GROUPS">
-      <collection />
-    </option>
-    <option name="RECENTLY_FILTERED_BRANCH_GROUPS">
-      <collection />
-    </option>
-  </component>
-  <component name="VcsContentAnnotationSettings">
-    <option name="myLimit" value="2678400000" />
-  </component>
-  <component name="XDebuggerManager">
-    <breakpoint-manager>
-      <option name="time" value="47" />
-    </breakpoint-manager>
-    <watches-manager />
-  </component>
-  <component name="antWorkspaceConfiguration">
-    <option name="IS_AUTOSCROLL_TO_SOURCE" value="false" />
-    <option name="FILTER_TARGETS" value="false" />
-  </component>
-  <component name="editorHistoryManager">
-    <entry file="file://$PROJECT_DIR$/studentview/assets/js/jquery.min.js">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="0">
-          <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/studentview/database/getProjectsOfAuthor.php">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="0">
-          <caret line="16" column="29" lean-forward="false" selection-start-line="15" selection-start-column="0" selection-end-line="16" selection-end-column="29" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/studentview/database/putTagsAndPW.php">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="0">
-          <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/studentview/database/getTags.php">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="0">
-          <caret line="25" column="5" lean-forward="false" selection-start-line="25" selection-start-column="5" selection-end-line="25" selection-end-column="5" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/studentview/assets/css/projects.css">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="0">
-          <caret line="25" column="0" lean-forward="false" selection-start-line="25" selection-start-column="0" selection-end-line="25" selection-end-column="0" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$APPLICATION_CONFIG_DIR$/consoles/db/14340c2c-ac4b-492f-ac4f-18c0853598a8/console_1.sql" />
-    <entry file="dbDummy://dbtable:/fc3764cf/14340c2c-ac4b-492f-ac4f-18c0853598a8/fltrail.tags" />
-    <entry file="file://$PROJECT_DIR$/studentview/assets/js/register.js">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="0">
-          <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/studentview/assets/js/getProjects.js">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="0">
-          <caret line="4" column="9" lean-forward="false" selection-start-line="4" selection-start-column="9" selection-end-line="4" selection-end-column="9" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/studentview/assets/css/Sidebar-Menu1.css">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="0">
-          <caret line="49" column="13" lean-forward="false" selection-start-line="49" selection-start-column="13" selection-end-line="49" selection-end-column="13" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/studentview/assets/js/Sidebar-Menu.js">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="0">
-          <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/studentview/database/tokenSetter.php">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="0">
-          <caret line="17" column="2" lean-forward="false" selection-start-line="17" selection-start-column="2" selection-end-line="17" selection-end-column="2" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/studentview/database/deleteProject.php">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="0">
-          <caret line="35" column="42" lean-forward="false" selection-start-line="35" selection-start-column="42" selection-end-line="35" selection-end-column="42" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/studentview/database/putProject.php">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="0">
-          <caret line="21" column="44" lean-forward="false" selection-start-line="21" selection-start-column="44" selection-end-line="21" selection-end-column="44" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/studentview/database/getProjects.php">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="0">
-          <caret line="21" column="4" lean-forward="false" selection-start-line="21" selection-start-column="4" selection-end-line="21" selection-end-column="60" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/studentview/assets/css/styles.css">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="0">
-          <caret line="349" column="57" lean-forward="false" selection-start-line="349" selection-start-column="57" selection-end-line="349" selection-end-column="57" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/studentview/database/userExists.php">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="0">
-          <caret line="24" column="44" lean-forward="false" selection-start-line="24" selection-start-column="44" selection-end-line="24" selection-end-column="44" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/studentview/database/createUser.php">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="0">
-          <caret line="12" column="0" lean-forward="false" selection-start-line="33" selection-start-column="16" selection-end-line="34" selection-end-column="34" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$USER_HOME$/phpMyAdmin/index.php" />
-    <entry file="file://$USER_HOME$/phpMyAdmin/js/get_scripts.js.php" />
-    <entry file="file://$PROJECT_DIR$/dbschema/fltrail.sql" />
-    <entry file="file://$PROJECT_DIR$/dbschema/createDummyUser.sql" />
-    <entry file="file://$PROJECT_DIR$/studentview/database/getAdresses.php">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="0">
-          <caret line="60" column="20" lean-forward="false" selection-start-line="60" selection-start-column="20" selection-end-line="60" selection-end-column="20" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/studentview/assets/js/myGroupsInit.js">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="0">
-          <caret line="31" column="13" lean-forward="false" selection-start-line="31" selection-start-column="12" selection-end-line="31" selection-end-column="13" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/studentview/assets/js/utility.js">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="0">
-          <caret line="0" column="9" lean-forward="false" selection-start-line="0" selection-start-column="9" selection-end-line="0" selection-end-column="9" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/studentview/assets/js/deleteProject.js">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="0">
-          <caret line="29" column="45" lean-forward="false" selection-start-line="29" selection-start-column="45" selection-end-line="29" selection-end-column="45" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/studentview/assets/js/newProject.js">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="0">
-          <caret line="92" column="40" lean-forward="false" selection-start-line="92" selection-start-column="40" selection-end-line="92" selection-end-column="40" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="dbDummy://dbtable:/fc3764cf/14340c2c-ac4b-492f-ac4f-18c0853598a8/fltrail.projects" />
-    <entry file="file://$PROJECT_DIR$/studentview/assets/js/createPreferences.js">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="0">
-          <caret line="124" column="28" lean-forward="false" selection-start-line="124" selection-start-column="28" selection-end-line="124" selection-end-column="28" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/studentview/pages/deleteProject.php">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="0">
-          <caret line="19" column="50" lean-forward="false" selection-start-line="19" selection-start-column="50" selection-end-line="19" selection-end-column="50" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/studentview/pages/enrollment.php">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="0">
-          <caret line="19" column="50" lean-forward="false" selection-start-line="19" selection-start-column="50" selection-end-line="19" selection-end-column="50" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/studentview/pages/menu.php">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="0">
-          <caret line="20" column="6" lean-forward="false" selection-start-line="20" selection-start-column="6" selection-end-line="20" selection-end-column="6" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/studentview/pages/mygroups.php">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="0">
-          <caret line="19" column="4" lean-forward="false" selection-start-line="19" selection-start-column="4" selection-end-line="19" selection-end-column="50" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/studentview/pages/newproject.php">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="0">
-          <caret line="21" column="50" lean-forward="false" selection-start-line="21" selection-start-column="50" selection-end-line="21" selection-end-column="50" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="dbDummy://dbtable:/fc3764cf/14340c2c-ac4b-492f-ac4f-18c0853598a8/fltrail.users" />
-    <entry file="file://$APPLICATION_CONFIG_DIR$/consoles/db/85944065-0254-4a61-b256-d3493cdb0a4f/console.sql" />
-    <entry file="file://$PROJECT_DIR$/studentview/pages/preferences.php">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="725">
-          <caret line="112" column="0" lean-forward="false" selection-start-line="112" selection-start-column="0" selection-end-line="112" selection-end-column="0" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/studentview/database/config.php">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="160">
-          <caret line="8" column="0" lean-forward="false" selection-start-line="8" selection-start-column="0" selection-end-line="8" selection-end-column="0" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/studentview/assets/js/config.js">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="40">
-          <caret line="2" column="71" lean-forward="false" selection-start-line="2" selection-start-column="71" selection-end-line="2" selection-end-column="71" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/studentview/index.php">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="520">
-          <caret line="26" column="45" lean-forward="false" selection-start-line="26" selection-start-column="45" selection-end-line="26" selection-end-column="45" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/studentview/register.php">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="425">
-          <caret line="24" column="98" lean-forward="false" selection-start-line="24" selection-start-column="98" selection-end-line="24" selection-end-column="98" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/.gitignore">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="0">
-          <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/gemeinsamforschen/out/artifacts/gemeinsamforschen_war_exploded/META-INF/MANIFEST.MF" />
-    <entry file="file://$PROJECT_DIR$/gemeinsamforschen/src/scripts/munschkins.sql">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="0">
-          <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/gemeinsamforschen/src/main/java/unipotsdam/gf/munchkin/IMunschkin.java" />
-    <entry file="file://$PROJECT_DIR$/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/ResearchReport" />
-    <entry file="file://$PROJECT_DIR$/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/IMunschkin.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="240">
-          <caret line="12" column="0" lean-forward="true" selection-start-line="12" selection-start-column="0" selection-end-line="12" selection-end-column="0" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/ResearchReport.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="693">
-          <caret line="33" column="39" lean-forward="false" selection-start-line="33" selection-start-column="39" selection-end-line="33" selection-end-column="39" />
-          <folding />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/studentview/assets/js/showProjects.js">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="651">
-          <caret line="31" column="38" lean-forward="false" selection-start-line="31" selection-start-column="38" selection-end-line="31" selection-end-column="38" />
-          <folding />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/studentview/assets/js/overview.js">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="1806">
-          <caret line="86" column="0" lean-forward="false" selection-start-line="86" selection-start-column="0" selection-end-line="86" selection-end-column="0" />
-          <folding />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/studentview/pages/projects.php">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="21">
-          <caret line="125" column="34" lean-forward="false" selection-start-line="125" selection-start-column="34" selection-end-line="125" selection-end-column="34" />
-          <folding />
-        </state>
-      </provider>
-    </entry>
-  </component>
-</project>
\ No newline at end of file
diff --git a/gemeinsamforschen/pom.xml b/gemeinsamforschen/pom.xml
index 81951f476e7c6886f61276836521106f18b32204..e23a29992f526e80c3722a35ceb67be4d603cc01 100644
--- a/gemeinsamforschen/pom.xml
+++ b/gemeinsamforschen/pom.xml
@@ -146,6 +146,24 @@
             <version>3.0.1</version>
             <scope>provided</scope>
         </dependency>
+        <dependency>
+            <groupId>org.glassfish.jersey.test-framework.providers</groupId>
+            <artifactId>jersey-test-framework-provider-inmemory</artifactId>
+            <version>${jersey.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.glassfish.jersey.test-framework</groupId>
+            <artifactId>jersey-test-framework-util</artifactId>
+            <version>2.27</version>
+            <scope>test</scope>
+        </dependency>
+
+        <!-- dropwizard - Need this for '@PATCH' annotation -->
+        <dependency>
+            <groupId>io.dropwizard</groupId>
+            <artifactId>dropwizard-core</artifactId>
+            <version>1.3.4</version>
+        </dependency>
 
         <dependency>
             <groupId>com.atlassian.commonmark</groupId>
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/config/Constants.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/config/Constants.java
new file mode 100644
index 0000000000000000000000000000000000000000..125862780cbc50f02a1a8978b49f87eaacdeef3c
--- /dev/null
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/config/Constants.java
@@ -0,0 +1,6 @@
+package unipotsdam.gf.config;
+
+public interface Constants {
+
+    String ROCKET_CHAT_URL = "http://rocketchat.westeurope.cloudapp.azure.com";
+}
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/config/GFApplicationBinder.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/config/GFApplicationBinder.java
new file mode 100644
index 0000000000000000000000000000000000000000..554cf0504b8783acc9589f00deaa64eb8356a581
--- /dev/null
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/config/GFApplicationBinder.java
@@ -0,0 +1,15 @@
+package unipotsdam.gf.config;
+
+import org.glassfish.hk2.utilities.binding.AbstractBinder;
+import unipotsdam.gf.core.management.Management;
+import unipotsdam.gf.core.management.ManagementImpl;
+import unipotsdam.gf.interfaces.ICommunication;
+import unipotsdam.gf.modules.communication.service.CommunicationDummyService;
+
+public class GFApplicationBinder extends AbstractBinder {
+    @Override
+    protected void configure() {
+        bind(CommunicationDummyService.class).to(ICommunication.class);
+        bind(ManagementImpl.class).to(Management.class);
+    }
+}
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/GFDatabaseConfig.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/config/GFDatabaseConfig.java
similarity index 92%
rename from gemeinsamforschen/src/main/java/unipotsdam/gf/GFDatabaseConfig.java
rename to gemeinsamforschen/src/main/java/unipotsdam/gf/config/GFDatabaseConfig.java
index 60776e4510da20091cb98c522dcc2661dcd115e0..252905102d2472eaa125f06499bbdfe1663ea254 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/GFDatabaseConfig.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/config/GFDatabaseConfig.java
@@ -1,4 +1,4 @@
-package unipotsdam.gf;
+package unipotsdam.gf.config;
 
 /**
  * Created by dehne on 31.05.2018.
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/config/GFResourceConfig.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/config/GFResourceConfig.java
new file mode 100644
index 0000000000000000000000000000000000000000..4cef8bbc5dce4f8fdb74373b18d949ea7d093ba1
--- /dev/null
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/config/GFResourceConfig.java
@@ -0,0 +1,11 @@
+package unipotsdam.gf.config;
+
+import org.glassfish.jersey.server.ResourceConfig;
+
+public class GFResourceConfig extends ResourceConfig {
+
+    public GFResourceConfig() {
+        register(new GFApplicationBinder());
+        packages("unipotsdam.gf");
+    }
+}
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/database/mysql/MysqlConnect.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/database/mysql/MysqlConnect.java
index 002c4bbd3b1eaf5fed52afd74769d11ee74b6746..80ed128cf20fc34528390e98806b166a9495fde7 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/database/mysql/MysqlConnect.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/database/mysql/MysqlConnect.java
@@ -1,6 +1,6 @@
 package unipotsdam.gf.core.database.mysql;
 
-import unipotsdam.gf.GFDatabaseConfig;
+import unipotsdam.gf.config.GFDatabaseConfig;
 
 import java.sql.*;
 import java.util.Date;
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 e997c2bd1e1eb277171c7257530476f943817818..ff270f7b46d23457b3742b15596a296d9a99179e 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
@@ -1,6 +1,10 @@
 package unipotsdam.gf.core.database.mysql;
 
-import java.sql.*;
+import java.sql.Date;
+import java.sql.ResultSet;
+import java.sql.ResultSetMetaData;
+import java.sql.SQLException;
+import java.sql.Timestamp;
 
 
 public class VereinfachtesResultSet {
@@ -71,6 +75,15 @@ public class VereinfachtesResultSet {
 		throw new Error("error in VereinfachtesResultSet");
 	}
 
+    public Timestamp getTimestamp(String columnLabel) {
+        try {
+            return resultSet.getTimestamp(columnLabel);
+        } catch (SQLException ex) {
+            System.err.println(ex.getMessage());
+        }
+        throw new Error("error in VereinfachtesResultSet");
+    }
+
 
 	public String getString(String columnLabel) {
 		try {
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/Management.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/Management.java
index dd4ebf438976d96cfe61b1bf4402569834e57ae7..73c0b1e608c2ea6dc3821ad703904162908d9577 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/Management.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/Management.java
@@ -1,10 +1,13 @@
 package unipotsdam.gf.core.management;
 
+import unipotsdam.gf.core.management.group.Group;
 import unipotsdam.gf.core.management.project.Project;
 import unipotsdam.gf.core.management.user.User;
 import unipotsdam.gf.core.management.user.UserInterests;
 import unipotsdam.gf.core.management.user.UserProfile;
-import unipotsdam.gf.modules.assessment.controller.StudentIdentifier;
+import unipotsdam.gf.modules.assessment.controller.model.StudentIdentifier;
+
+import java.util.List;
 
 /**
  * Created by dehne on 31.05.2018.
@@ -13,12 +16,14 @@ import unipotsdam.gf.modules.assessment.controller.StudentIdentifier;
 public interface Management {
     /**
      * delete a User in the database
+     *
      * @param identifier
      */
     void delete(StudentIdentifier identifier);
 
     /**
      * create a User in the database
+     *
      * @param user
      * @param profile
      */
@@ -26,18 +31,28 @@ public interface Management {
 
     /**
      * create a Project in the database
+     *
      * @param project
      */
     void create(Project project);
 
     /**
      * Delete a Project in the database
+     *
      * @param project
      */
     void delete(Project project);
 
+    /**
+     * Update a User in the database
+     *
+     * @param user
+     */
+    void update(User user);
+
     /**
      * Add an entry in the M:N table linking users and projects
+     *
      * @param user
      * @param project
      * @param interests
@@ -46,20 +61,29 @@ public interface Management {
 
     /**
      * Check if a user exists in the DB
+     *
      * @param user
      * @return
      */
     Boolean exists(User user);
 
+    /**
+     * Check if a project exists in the DB
+     */
+
+    Boolean exists(Project project);
+
     /**
      * Get all the users linked to a project
+     *
      * @param project
      * @return
      */
-    java.util.List<User> getUsers(Project project);
+    List<User> getUsers(Project project);
 
     /**
      * get the token for the user
+     *
      * @param user
      * @return
      */
@@ -67,9 +91,34 @@ public interface Management {
 
     /**
      * get the user given his http token
+     *
      * @param token
      * @return
      */
-    User getUser(String token);
+    User getUserByToken(String token);
+
+    /**
+     * get user by its email address
+     *
+     * @param email
+     * @return
+     */
+    User getUserByEmail(String email);
+
+    /**
+     * get project by its id
+     *
+     * @param id
+     * @return
+     */
+    Project getProjectById(String id);
+
+    void createGroup(Group group, String projectId);
+
+    void addGroupMember(User groupMember, int groupId);
+
+    void deleteGroupMember(User groupMember, int groupId);
+
+    List<Group> getGroupsByProjectId(String projectId);
 }
 
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/ManagementImpl.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/ManagementImpl.java
index dfffd4df1fdf0dee228ae9e1d499876342e4219c..1cecac2de82d93e049cbc159843b7f91334fb6ec 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/ManagementImpl.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/ManagementImpl.java
@@ -2,12 +2,17 @@ package unipotsdam.gf.core.management;
 
 import unipotsdam.gf.core.database.mysql.MysqlConnect;
 import unipotsdam.gf.core.database.mysql.VereinfachtesResultSet;
+import unipotsdam.gf.core.management.group.Group;
 import unipotsdam.gf.core.management.project.Project;
 import unipotsdam.gf.core.management.user.User;
 import unipotsdam.gf.core.management.user.UserInterests;
 import unipotsdam.gf.core.management.user.UserProfile;
-import unipotsdam.gf.modules.assessment.controller.StudentIdentifier;
+import unipotsdam.gf.modules.assessment.controller.model.StudentIdentifier;
 
+import javax.annotation.ManagedBean;
+import javax.annotation.Resource;
+import javax.inject.Singleton;
+import java.sql.Timestamp;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.UUID;
@@ -15,6 +20,9 @@ import java.util.UUID;
 /**
  * Created by dehne on 31.05.2018.
  */
+@ManagedBean
+@Resource
+@Singleton
 public class ManagementImpl implements Management {
     @Override
     public void delete(StudentIdentifier identifier) {
@@ -32,14 +40,16 @@ public class ManagementImpl implements Management {
 
         MysqlConnect connect = new MysqlConnect();
         connect.connect();
-        String mysqlRequest = "INSERT INTO users (`name`, `password`, `email`, `token`,`isStudent`) values (?,?,?,?,?)";
+        String mysqlRequest = "INSERT INTO users (`name`, `password`, `email`, `token`,`isStudent`," +
+                "`rocketChatId`,`rocketChatAuthToken`) values (?,?,?,?,?,?,?)";
         connect.issueInsertOrDeleteStatement(mysqlRequest, user.getName(), user.getPassword(), user.getEmail(),
-                token, user.getStudent());
+                token, user.getStudent(), user.getRocketChatId(), user.getRocketChatAuthToken());
         connect.close();
 
         // TODO implmement UserProfile @Mar
     }
 
+    // TODO: naming convention discussion? all is named create, but group is named createGroup
     @Override
     public void create(Project project) {
         UUID uuid = UUID.randomUUID();
@@ -48,9 +58,10 @@ public class ManagementImpl implements Management {
         MysqlConnect connect = new MysqlConnect();
         connect.connect();
         String mysqlRequest =
-                "INSERT INTO projects (`id`, `password`, `activ`, `timecreated`, `author`, " + "`adminpassword`, `token`) values (?,?,?,?,?,?,?)";
-        connect.issueInsertOrDeleteStatement(mysqlRequest, project.getId(), project.getPassword(), project.getActiv(),
-                project.getTimecreated(), project.getAuthor(), project.getAdminpassword(), token);
+                "INSERT INTO projects (`id`, `password`, `active`, `timecreated`, `author`, "
+                        + "`adminPassword`, `token`) values (?,?,?,?,?,?,?)";
+        connect.issueInsertOrDeleteStatement(mysqlRequest, project.getId(), project.getPassword(), project.isActive(),
+                project.getTimecreated(), project.getAuthor(), project.getAdminPassword(), token);
         connect.close();
     }
 
@@ -72,9 +83,20 @@ public class ManagementImpl implements Management {
         connect.close();
     }
 
+    @Override
+    public void update(User user) {
+        MysqlConnect connect = new MysqlConnect();
+        connect.connect();
+        String mysqlRequest = "UPDATE `users` SET `name`=?,`password`=?,`email`=?,`token`=?,`isStudent`=?, `rocketChatId`=?,`rocketChatAuthToken`=? WHERE email=? LIMIT 1";
+        //TODO: maybe add handling if a line is actually updated
+        connect.issueUpdateStatement(mysqlRequest, user.getName(), user.getPassword(), user.getEmail(),
+                user.getToken(), user.getStudent(), user.getRocketChatId(), user.getRocketChatAuthToken(), user.getEmail());
+        connect.close();
+    }
+
     @Override
     public Boolean exists(User user) {
-        Boolean result = false;
+        Boolean result;
         MysqlConnect connect = new MysqlConnect();
         connect.connect();
         String mysqlRequest = "SELECT * FROM users where email = ? and password = ?";
@@ -82,18 +104,31 @@ public class ManagementImpl implements Management {
                 connect.issueSelectStatement(mysqlRequest, user.getEmail(), user.getPassword());
         result = vereinfachtesResultSet.next();
         connect.close();
-        if (result == null) {
-            return false;
-        }
+        return result;
+    }
+
+    @Override
+    public Boolean exists(Project project) {
+        Boolean result;
+        MysqlConnect connect = new MysqlConnect();
+        connect.connect();
+        String mysqlRequest = "SELECT * FROM projects where id = ? and adminPassword = ?";
+        VereinfachtesResultSet vereinfachtesResultSet =
+                connect.issueSelectStatement(mysqlRequest, project.getId(), project.getAdminPassword());
+        result = vereinfachtesResultSet.next();
+        connect.close();
         return result;
     }
 
     @Override
     public List<User> getUsers(Project project) {
         String query =
-                "SELECT * FROM users u " + " JOIN projectuser pu ON u.email=pu.userId" + " JOIN projects p ON pu.projectId = p.id" + " WHERE pu.projectId = ?";
+                "SELECT * FROM users u "
+                        + " JOIN projectuser pu ON u.email=pu.userId"
+                        + " JOIN projects p ON pu.projectId = p.id"
+                        + " WHERE pu.projectId = ?";
 
-        ArrayList<User> result = new ArrayList<User>();
+        ArrayList<User> result = new ArrayList<>();
         MysqlConnect connect = new MysqlConnect();
         connect.connect();
         VereinfachtesResultSet vereinfachtesResultSet = connect.issueSelectStatement(query, project.getId());
@@ -112,12 +147,31 @@ public class ManagementImpl implements Management {
         String name = vereinfachtesResultSet.getString("name");
         String password = vereinfachtesResultSet.getString("password");
         String email = vereinfachtesResultSet.getString("email");
-        String rocketChatId = vereinfachtesResultSet.getString("rocketchatid");
+        String rocketChatId = vereinfachtesResultSet.getString("rocketChatId");
+        String rocketChatAuthToken = vereinfachtesResultSet.getString("rocketChatAuthToken");
         Boolean isStudent = vereinfachtesResultSet.getBoolean("isStudent");
+        return new User(name, password, email, rocketChatId, rocketChatAuthToken, isStudent);
+    }
 
-        return new User(name, password, email, rocketChatId, isStudent);
+    private Project getProjectFromResultSet(VereinfachtesResultSet vereinfachtesResultSet) {
+        String id = vereinfachtesResultSet.getString("id");
+        String password = vereinfachtesResultSet.getString("password");
+        boolean active = vereinfachtesResultSet.getBoolean("active");
+        Timestamp timestamp = vereinfachtesResultSet.getTimestamp("timecreated");
+        String author = vereinfachtesResultSet.getString("author");
+        String adminPassword = vereinfachtesResultSet.getString("adminpassword");
+        String token = vereinfachtesResultSet.getString("token");
+
+        return new Project(id, password, active, timestamp, author, adminPassword, token);
     }
 
+    private Group getGroupFromResultSet(VereinfachtesResultSet vereinfachtesResultSet) {
+        int id = vereinfachtesResultSet.getInt("id");
+        String projectId = vereinfachtesResultSet.getString("projectId");
+        String chatRoomId = vereinfachtesResultSet.getString("chatRoomId");
+        // TODO: determine how to get all User
+        return new Group(id, new ArrayList<>(), projectId, chatRoomId);
+    }
     @Override
     public String getUserToken(User user) {
         MysqlConnect connect = new MysqlConnect();
@@ -136,12 +190,21 @@ public class ManagementImpl implements Management {
     }
 
     @Override
-    public User getUser(String token) {
+    public User getUserByToken(String token) {
+        return getUserByField("token", token);
+    }
+
+    @Override
+    public User getUserByEmail(String email) {
+        return getUserByField("email", email);
+    }
+
+    private User getUserByField(String field, String value) {
         MysqlConnect connect = new MysqlConnect();
         connect.connect();
-        String mysqlRequest = "SELECT * FROM users where token = ?";
+        String mysqlRequest = "SELECT * FROM users where " + field + " = ?";
         VereinfachtesResultSet vereinfachtesResultSet =
-                connect.issueSelectStatement(mysqlRequest, token);
+                connect.issueSelectStatement(mysqlRequest, value);
         boolean next = vereinfachtesResultSet.next();
         if (next) {
             User user = getUserFromResultSet(vereinfachtesResultSet);
@@ -152,4 +215,68 @@ public class ManagementImpl implements Management {
             return null;
         }
     }
+
+    @Override
+    public Project getProjectById(String id) {
+        MysqlConnect connect = new MysqlConnect();
+        connect.connect();
+        String mysqlRequest = "SELECT * FROM projects where id = ?";
+        VereinfachtesResultSet vereinfachtesResultSet =
+                connect.issueSelectStatement(mysqlRequest, id);
+        boolean next = vereinfachtesResultSet.next();
+        if (next) {
+            Project project = getProjectFromResultSet(vereinfachtesResultSet);
+            connect.close();
+            return project;
+        } else {
+            connect.close();
+            return null;
+        }
+    }
+
+
+    @Override
+    public void createGroup(Group group, String projectId) {
+        MysqlConnect connect = new MysqlConnect();
+        connect.connect();
+
+        Project project = getProjectById(projectId);
+
+        for (User groupMember : group.getMembers()) {
+            String mysqlRequest2 = "INSERT INTO groupuser (`userEmail`, `groupId`) values (?,?)";
+            connect.issueInsertOrDeleteStatement(mysqlRequest2, groupMember.getEmail(), project.getId());
+        }
+        connect.close();
+    }
+
+    @Override
+    public void addGroupMember(User groupMember, int groupId) {
+
+    }
+
+    @Override
+    public void deleteGroupMember(User groupMember, int groupId) {
+
+    }
+
+    @Override
+    public List<Group> getGroupsByProjectId(String projectId) {
+        MysqlConnect connect = new MysqlConnect();
+        connect.connect();
+        // TODO: implement correct join and finish implementation
+        String mysqlRequest = "SELECT * FROM groups g " +
+                "JOIN groupuser gu u ON g.id=gu.groupId " + "JOIN users u ON gu.userEmail=u.email" +
+                "where g.projectId = ?";
+        VereinfachtesResultSet vereinfachtesResultSet =
+                connect.issueSelectStatement(mysqlRequest, projectId);
+        ArrayList<Group> groups = new ArrayList<>();
+        while (vereinfachtesResultSet.next()) {
+            //groups.add()
+        }
+        if (groups.isEmpty()) {
+            return null;
+        } else {
+            return groups;
+        }
+    }
 }
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/group/Group.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/group/Group.java
new file mode 100644
index 0000000000000000000000000000000000000000..ea56b43196cd93b3c87518dfa55ab58e2840c8b9
--- /dev/null
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/group/Group.java
@@ -0,0 +1,67 @@
+package unipotsdam.gf.core.management.group;
+
+import unipotsdam.gf.core.management.user.User;
+
+import java.util.List;
+
+public class Group {
+
+    private int id; // do not set yourself, autoincrement
+    private List<User> members;
+    private String projectId;
+    private String chatRoomId;
+
+    public Group() {
+    }
+
+    public Group(List<User> members, String projectId) {
+        this.members = members;
+        this.projectId = projectId;
+        this.chatRoomId = "";
+    }
+
+    public Group(List<User> members, String projectId, String chatRoomId) {
+        this.members = members;
+        this.projectId = projectId;
+        this.chatRoomId = chatRoomId;
+    }
+
+    public Group(int id, List<User> members, String projectId, String chatRoomId) {
+        this.id = id;
+        this.members = members;
+        this.projectId = projectId;
+        this.chatRoomId = chatRoomId;
+    }
+
+    public List<User> getMembers() {
+        return members;
+    }
+
+    public void setMembers(List<User> members) {
+        this.members = members;
+    }
+
+    public String getChatRoomId() {
+        return chatRoomId;
+    }
+
+    public void setChatRoomId(String chatRoomId) {
+        this.chatRoomId = chatRoomId;
+    }
+
+    public void addMember(User user) {
+        members.add(user);
+    }
+
+    public String getProjectId() {
+        return projectId;
+    }
+
+    public void setProjectId(String projectId) {
+        this.projectId = projectId;
+    }
+
+    public int getId() {
+        return id;
+    }
+}
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/project/Project.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/project/Project.java
index de780722652eb40ea1f6f6e2f1518fa0e752bcb3..682b5c40b13472a4bc3369eb7970ddb9bce428fd 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/project/Project.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/project/Project.java
@@ -1,7 +1,5 @@
 package unipotsdam.gf.core.management.project;
 
-import org.glassfish.grizzly.http.util.TimeStamp;
-
 import java.sql.Timestamp;
 import java.time.LocalDateTime;
 import java.time.ZoneId;
@@ -13,25 +11,45 @@ public class Project {
 
     private String id;
     private String password;
-    private String activ;
+    private Boolean active;
     private Timestamp timecreated;
     private String author;
-    private String adminpassword;
+    private String adminPassword;
     private String token;
 
     public Project() {
     }
 
-    public Project(
-            String id, String password, String activ, String author, String adminpassword) {
+    public Project(String id, String password, Boolean active, String author, String adminPassword) {
+        this.id = id;
+        this.password = password;
+        this.active = active;
+        this.author = author;
+        this.adminPassword = adminPassword;
+
+        this.timecreated = Timestamp.valueOf(LocalDateTime.now(ZoneId.of("UTC")));
+    }
+
+    public Project(String id, String password, Boolean active, String author, String adminPassword, String token) {
         this.id = id;
         this.password = password;
-        this.activ = activ;
+        this.active = active;
         this.author = author;
-        this.adminpassword = adminpassword;
+        this.adminPassword = adminPassword;
+        this.token = token;
+
+        this.timecreated = Timestamp.valueOf(LocalDateTime.now(ZoneId.of("UTC")));
+    }
 
-        Timestamp ts = Timestamp.valueOf(LocalDateTime.now(ZoneId.of("UTC")));
-        this.timecreated = ts;
+    public Project(String id, String password, Boolean active, Timestamp timecreated, String author,
+                   String adminPassword, String token) {
+        this.id = id;
+        this.password = password;
+        this.active = active;
+        this.timecreated = timecreated;
+        this.author = author;
+        this.adminPassword = adminPassword;
+        this.token = token;
     }
 
     public String getId() {
@@ -50,12 +68,12 @@ public class Project {
         this.password = password;
     }
 
-    public String getActiv() {
-        return activ;
+    public Boolean isActive() {
+        return active;
     }
 
-    public void setActiv(String activ) {
-        this.activ = activ;
+    public void setActive(Boolean active) {
+        this.active = active;
     }
 
     public String getAuthor() {
@@ -66,12 +84,12 @@ public class Project {
         this.author = author;
     }
 
-    public String getAdminpassword() {
-        return adminpassword;
+    public String getAdminPassword() {
+        return adminPassword;
     }
 
-    public void setAdminpassword(String adminpassword) {
-        this.adminpassword = adminpassword;
+    public void setAdminPassword(String adminPassword) {
+        this.adminPassword = adminPassword;
     }
 
     public String getToken() {
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/user/HiddenUserTag.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/user/HiddenUserTag.java
index 57b6326cc78caca6e9673a9dab8ce31f0118113e..3b3800696c9a44662e03285220d62fe5e8a6822f 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/user/HiddenUserTag.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/user/HiddenUserTag.java
@@ -1,24 +1,24 @@
 package unipotsdam.gf.core.management.user;
 
 import unipotsdam.gf.core.management.ManagementImpl;
-import unipotsdam.gf.core.management.user.User;
 
 import javax.servlet.http.HttpServletRequest;
-import javax.servlet.jsp.tagext.*;
-import javax.servlet.jsp.*;
-import java.io.*;
+import javax.servlet.jsp.JspWriter;
+import javax.servlet.jsp.PageContext;
+import javax.servlet.jsp.tagext.SimpleTagSupport;
+import java.io.IOException;
 
 /**
  * implemented while porting the login page. It might be useful to have a hidden user field on the page in order to
  * manipulate the user data with jquery
  */
 public class HiddenUserTag extends SimpleTagSupport {
-    public void doTag() throws JspException, IOException {
+    public void doTag() throws IOException {
         PageContext pageContext = (PageContext) getJspContext();
         HttpServletRequest request = (HttpServletRequest) pageContext.getRequest();
         String token = request.getParameter("token");
         ManagementImpl management = new ManagementImpl();
-        User user = management.getUser(token);
+        User user = management.getUserByToken(token);
         JspWriter out = getJspContext().getOut();
         out.println("<p id=\"user\" hidden>"+user.getName()+"</p>");
     }
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/user/Menu.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/user/Menu.java
new file mode 100644
index 0000000000000000000000000000000000000000..0687412932fabd0f86be3d43a448500616ab62a8
--- /dev/null
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/user/Menu.java
@@ -0,0 +1,49 @@
+package unipotsdam.gf.core.management.user;
+
+import unipotsdam.gf.core.management.Management;
+import unipotsdam.gf.core.management.ManagementImpl;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.jsp.JspException;
+import javax.servlet.jsp.JspWriter;
+import javax.servlet.jsp.PageContext;
+import javax.servlet.jsp.tagext.SimpleTagSupport;
+import java.io.IOException;
+
+public class Menu extends SimpleTagSupport {
+    public void doTag() throws JspException, IOException {
+        Management management = new ManagementImpl();
+        PageContext pageContext = (PageContext) getJspContext();
+        HttpServletRequest request = (HttpServletRequest) pageContext.getRequest();
+        String token = request.getParameter("token");
+        User user =  management.getUserByToken(token);
+        JspWriter out = getJspContext().getOut();
+        Boolean isStudent = user.getStudent();
+        if (isStudent){
+            out.println("<div id=\"sidebar-wrapper\">\n" +
+                    "        <ul class=\"sidebar-nav\">\n" +
+                    "            <li class=\"sidebar-brand\"><a href=\"overview-student.html\">overview</a></li>\n" +
+                    "            <li><a href=\"takeQuiz.jsp\">Quizfrage</a></li>\n" +
+                    "            <li><a href=\"#\">ePortfolio</a></li>\n" +
+                    "            <li><a href=\"#\">Beitrag</a></li>\n" +
+                    "            <li><a href=\"finalAssessments.jsp\">Bewertung</a></li>\n" +
+                    "            <li><a href=\"../index.jsp\">Logout</a></li>\n" +
+                    "        </ul>\n" +
+                    "    </div>");
+        } else {
+            out.println("<div id=\"sidebar-wrapper\">\n" +
+                    "        <ul class=\"sidebar-nav\">\n" +
+                    "            <li class=\"sidebar-brand\"><a href=\"overview-docent.html\">overview</a></li>\n" +
+                    "            <li><a href=\"createQuiz.jsp\">Quizfrage</a></li>\n" +
+                    "            <li><a href=\"#\">ePortfolio</a></li>\n" +
+                    "            <li><a href=\"#\">Beitrag</a></li>\n" +
+                    "            <li><a href=\"#\">Gruppen erstellen</a></li>\n" +
+                    "            <li><a href=\"#\">Projektphase ändern</a></li>\n" +
+                    "            <li><a href=\"finalAssessments.jsp\">Bewertung</a></li>\n" +
+                    "            <li><a href=\"../index.jsp\">Logout</a></li>\n" +
+                    "        </ul>\n" +
+                    "    </div>");
+        }
+
+    }
+};
\ No newline at end of file
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/user/SessionValidator.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/user/SessionValidator.java
index 8fd6c0f6d2ae28b8f457ad12922d3698990ece10..3a3a695d7e870ddca681c05918a9a5c4acafddfd 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/user/SessionValidator.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/user/SessionValidator.java
@@ -4,7 +4,12 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import unipotsdam.gf.core.management.ManagementImpl;
 
-import javax.servlet.*;
+import javax.servlet.Filter;
+import javax.servlet.FilterChain;
+import javax.servlet.FilterConfig;
+import javax.servlet.ServletException;
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletResponse;
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
 
@@ -14,18 +19,18 @@ import java.io.IOException;
  */
 public class SessionValidator implements Filter {
 
-    Logger log = LoggerFactory.getLogger(SessionValidator.class);
+    private final static Logger log = LoggerFactory.getLogger(SessionValidator.class);
 
     private void redirectToLogin(ServletRequest request, ServletResponse response) {
         log.debug("redirecting user to login because token does not exist");
         String loginJSP = "../../index.jsp";
         ((HttpServletResponse) response).setHeader("Location", loginJSP);
-        ((HttpServletResponse) response).setContentType("text/html");
+        response.setContentType("text/html");
         ((HttpServletResponse) response).setStatus(HttpServletResponse.SC_FOUND); // SC_FOUND = 302
     }
 
     @Override
-    public void init(FilterConfig filterConfig) throws ServletException {
+    public void init(FilterConfig filterConfig) {
 
     }
 
@@ -37,7 +42,7 @@ public class SessionValidator implements Filter {
             redirectToLogin(request, response);
         }
         ManagementImpl management = new ManagementImpl();
-        User user = management.getUser(token);
+        User user = management.getUserByToken(token);
         if (user == null) {
             redirectToLogin(request, response);
         }
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/user/User.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/user/User.java
index 22f6157174ee5a3d8dbbb81e44e5fb1e8adaf068..ef9531d231c70944f627ee6afbaeb26ee1eb5ac5 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/user/User.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/user/User.java
@@ -1,14 +1,13 @@
 package unipotsdam.gf.core.management.user;
 
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+
 /**
  * Created by dehne on 31.05.2018.
  */
+@JsonIgnoreProperties(ignoreUnknown = true)
 public class User {
 
-    // the email is the id!
-    public String getId() {
-        return this.email;
-    }
     private String name;
     private String password;
     private String email;
@@ -25,16 +24,24 @@ public class User {
         this.password = password;
         this.email = email;
         this.isStudent = isStudent;
+        this.rocketChatAuthToken = "";
+        this.rocketChatId = "";
     }
 
-    public User(String name, String password, String email, String rocketChatId, Boolean isStudent) {
+    public User(String name, String password, String email, String rocketChatId, String rocketChatAuthToken, Boolean isStudent) {
         this.name = name;
         this.password = password;
         this.email = email;
         this.rocketChatId = rocketChatId;
+        this.rocketChatAuthToken = rocketChatAuthToken;
         this.isStudent = isStudent;
     }
 
+    // the email is the id!
+    public String getId() {
+        return this.email;
+    }
+
     public String getName() {
         return name;
     }
@@ -68,7 +75,6 @@ public class User {
     }
 
 
-
     public Boolean getStudent() {
         return isStudent;
     }
@@ -92,4 +98,17 @@ public class User {
     public void setRocketChatAuthToken(String rocketChatAuthToken) {
         this.rocketChatAuthToken = rocketChatAuthToken;
     }
+
+    @Override
+    public String toString() {
+        return "User{" +
+                "name='" + name + '\'' +
+                ", password='" + password + '\'' +
+                ", email='" + email + '\'' +
+                ", token='" + token + '\'' +
+                ", rocketChatAuthToken='" + rocketChatAuthToken + '\'' +
+                ", rocketChatId='" + rocketChatId + '\'' +
+                ", isStudent=" + isStudent +
+                '}';
+    }
 }
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/user/UserService.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/user/UserService.java
index 124a207aa523d5f6dedb5602e6acea7bee8b3e12..dd60731bfec82b9d1f9ce9138890407b116d5db4 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/user/UserService.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/user/UserService.java
@@ -4,6 +4,8 @@ import unipotsdam.gf.core.management.ManagementImpl;
 import unipotsdam.gf.interfaces.ICommunication;
 import unipotsdam.gf.modules.communication.service.CommunicationDummyService;
 
+import javax.annotation.ManagedBean;
+import javax.inject.Inject;
 import javax.ws.rs.FormParam;
 import javax.ws.rs.POST;
 import javax.ws.rs.Path;
@@ -14,8 +16,12 @@ import java.net.URI;
 import java.net.URISyntaxException;
 
 @Path("/user")
+@ManagedBean
 public class UserService {
 
+    @Inject
+    private ICommunication communicationService;
+
     /**
      * creates a user with given credentials
      *
@@ -36,13 +42,8 @@ public class UserService {
 
         ManagementImpl management = new ManagementImpl();
         User user = new User(name, password, email, isStudent == null);
-        ICommunication iCommunication = new CommunicationDummyService();
-        boolean chatUserCreated = iCommunication.registerUser(user);
-        if (chatUserCreated) {
-            return login(true, user);
-        } else {
-            return registrationError();
-        }
+        return login(true, user);
+
     }
 
     /**
@@ -87,21 +88,35 @@ public class UserService {
         ManagementImpl management = new ManagementImpl();
         if (management.exists(user)) {
             if (!createUser) {
+                user = fillUserFields(user);
                 return redirectToProjectPage(user, management);
             }
             String existsUrl = "../register.jsp?userExists=true";
             return forwardToLocation(existsUrl);
         } else {
             if (createUser) {
+                boolean isRegisteredAndLoggedIn = communicationService.registerAndLoginUser(user);
+                if (!isRegisteredAndLoggedIn) {
+                    return registrationError();
+                }
                 management.create(user, null);
+                user = fillUserFields(user);
+                return redirectToProjectPage(user, management);
             } else {
                 String existsUrl = "../index.jsp?userExists=false";
                 return forwardToLocation(existsUrl);
             }
-            return redirectToProjectPage(user, management);
+
         }
     }
 
+    private User fillUserFields(User user) {
+        ManagementImpl m = new ManagementImpl();
+        String token = m.getUserToken(user);
+        user = m.getUserByToken(token);
+        return user;
+    }
+
     private Response registrationError() throws URISyntaxException {
         String existsUrl = "../register.jsp?registrationError=true";
         return forwardToLocation(existsUrl);
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/user/UserService.java.orig b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/user/UserService.java.orig
new file mode 100644
index 0000000000000000000000000000000000000000..73d84e8fa40445fffec6c0a31a5523f9fb5e318f
--- /dev/null
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/user/UserService.java.orig
@@ -0,0 +1,163 @@
+package unipotsdam.gf.core.management.user;
+
+import unipotsdam.gf.core.management.ManagementImpl;
+import unipotsdam.gf.interfaces.ICommunication;
+import unipotsdam.gf.modules.communication.service.CommunicationDummyService;
+
+import javax.annotation.ManagedBean;
+import javax.inject.Inject;
+import javax.ws.rs.FormParam;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+import java.net.URI;
+import java.net.URISyntaxException;
+
+@Path("/user")
+@ManagedBean
+public class UserService {
+
+    @Inject
+    private ICommunication communicationService;
+
+    /**
+     * creates a user with given credentials
+     *
+     * @param name
+     * @param password
+     * @param email
+     * @param isStudent
+     * @return
+     * @throws URISyntaxException
+     */
+    // This method is called if HTML is request
+    @POST
+    @Produces(MediaType.TEXT_HTML)
+    @Path("/create")
+    public Response createUser(@FormParam("name") String name, @FormParam("password") String password,
+                               @FormParam("email") String email, @FormParam("isStudent") String isStudent)
+            throws URISyntaxException {
+
+        ManagementImpl management = new ManagementImpl();
+        User user = new User(name, password, email, isStudent == null);
+        return login(true, user);
+
+    }
+
+    /**
+     * checks if a user exists in order to log him in
+     *
+     * @param name
+     * @param password
+     * @param email
+     * @return
+     * @throws URISyntaxException
+     */
+    // This method is called if HTML is request
+    @POST
+    @Produces(MediaType.TEXT_HTML)
+    @Path("/exists")
+    public Response existsUser(@FormParam("name") String name, @FormParam("password") String password,
+                               @FormParam("email") String email)
+            throws URISyntaxException {
+
+        ManagementImpl management = new ManagementImpl();
+        User user = new User(name, password, email, null);
+        ICommunication iCommunication = new CommunicationDummyService();
+        boolean isLoggedIn = iCommunication.loginUser(user);
+        if (isLoggedIn) {
+            return login(false, user);
+        } else {
+            return loginError();
+        }
+
+
+    }
+
+    /**
+     * if create User is true, the user is created and logged in if he does not exist
+     *
+     * @param createUser
+     * @param user
+     * @return
+     * @throws URISyntaxException
+     */
+    protected Response login(boolean createUser, User user) throws URISyntaxException {
+        ManagementImpl management = new ManagementImpl();
+        if (management.exists(user)) {
+            if (!createUser) {
+<<<<<<< HEAD
+                ManagementImpl m = new ManagementImpl();
+                String token = m.getUserToken(user);
+                user = m.getUser(token);
+=======
+                boolean successfulLogin = communicationService.loginUser(user);
+                management.update(user);
+                if (!successfulLogin) {
+                    return loginError();
+                }
+>>>>>>> 9bbae0ff75b2597ab35479a24d47c12e7a4cc0fd
+                return redirectToProjectPage(user, management);
+            }
+            String existsUrl = "../register.jsp?userExists=true";
+            return forwardToLocation(existsUrl);
+        } else {
+            if (createUser) {
+                boolean isRegisteredAndLoggedIn = communicationService.registerAndLoginUser(user);
+                if (!isRegisteredAndLoggedIn) {
+                    return registrationError();
+                }
+                management.create(user, null);
+            } else {
+                String existsUrl = "../index.jsp?userExists=false";
+                return forwardToLocation(existsUrl);
+            }
+            ManagementImpl m = new ManagementImpl();
+            String token = m.getUserToken(user);
+            user = m.getUser(token); //todo: write query to get user isStudent
+            return redirectToProjectPage(user, management);
+        }
+    }
+
+    private Response registrationError() throws URISyntaxException {
+        String existsUrl = "../register.jsp?registrationError=true";
+        return forwardToLocation(existsUrl);
+    }
+
+    private Response loginError() throws URISyntaxException {
+        String existsUrl = "../index.jsp?loginError=true";
+        return forwardToLocation(existsUrl);
+    }
+
+    /**
+     * helper function for redirecting to the right project page
+     *
+     * @param user
+     * @param management
+     * @return
+     * @throws URISyntaxException
+     */
+    private Response redirectToProjectPage(User user, ManagementImpl management) throws URISyntaxException {
+        String successUrl;
+        if (user.getStudent() != null && user.getStudent()) {
+            successUrl = "../pages/overview-student.html?token=";
+        } else {
+            successUrl = "../pages/overview-docent.html?token=";
+        }
+        successUrl += management.getUserToken(user);
+        return forwardToLocation(successUrl);
+    }
+
+    /**
+     * * helper function for redirecting to a new page
+     *
+     * @param existsUrl
+     * @return
+     * @throws URISyntaxException
+     */
+    private Response forwardToLocation(String existsUrl) throws URISyntaxException {
+        return Response.seeOther(new URI(existsUrl)).build();
+    }
+}
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/utils/Category.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/utils/Category.java
new file mode 100644
index 0000000000000000000000000000000000000000..0929f342834ff143da72c6ebfa74ee911138338e
--- /dev/null
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/utils/Category.java
@@ -0,0 +1,11 @@
+package unipotsdam.gf.core.management.utils;
+
+/**
+ Categories for feedback and documents
+ created by Katharina
+ */
+
+public enum Category {
+    TITEL, RECHERCHE, LITERATURVERZEICHNIS, FORSCHUNGSFRAGE, UNTERSUCHUNGSKONZEPT, METHODIK, DURCHFUEHRUNG, AUSWERTUNG
+}
+ //Lernziele??
\ No newline at end of file
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/Annotatable.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/Annotatable.java
deleted file mode 100644
index c674c916e9a54c721d5db795e51e09c3714fe20a..0000000000000000000000000000000000000000
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/Annotatable.java
+++ /dev/null
@@ -1,53 +0,0 @@
-package unipotsdam.gf.interfaces;
-
-import unipotsdam.gf.modules.annotation.Annotation;
-
-import java.util.ArrayList;
-
-/**
- * @author Sven Kästle
- * skaestle@uni-potsdam.de
- */
-public interface Annotatable {
-
-    /**
-     * Adds an annotation to a target and returns the new id
-     *
-     * @param newAnnotation The new annotation as an Object
-     * @return Returns the id of the new annotation
-     */
-    int addAnnotation(Annotation newAnnotation);
-
-    /**
-     * Alters an annotation
-     *
-     * @param annotationId The id of the original annotation
-     * @param newBody The new body of the annotation
-     */
-    void alterAnnotation(int annotationId, String newBody);
-
-    /**
-     * Deletes an annotation
-     *
-     * @param annotationId The id of the annotation
-     */
-    void deleteAnnotation(int annotationId);
-
-    /**
-     * Returns a specific annotation from a target
-     *
-     * @param annotationId The id of the annotation
-     * @param targetId The id of the target
-     * @return Returns a specific annotation
-     */
-    Annotation getAnnotation(int annotationId, int targetId);
-
-    /**
-     * Returns all annotations from a target
-     *
-     * @param targetIds An ArrayList of target ids
-     * @return Returns all annotations
-     */
-    ArrayList<Annotation> getAnnotations(ArrayList<Integer> targetIds);
-
-}
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/IAnnotation.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/IAnnotation.java
new file mode 100644
index 0000000000000000000000000000000000000000..d8957a0d393696650cc86ad0216d05ea68bcfa65
--- /dev/null
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/IAnnotation.java
@@ -0,0 +1,62 @@
+package unipotsdam.gf.interfaces;
+
+import unipotsdam.gf.modules.annotation.model.Annotation;
+import unipotsdam.gf.modules.annotation.model.AnnotationPatchRequest;
+import unipotsdam.gf.modules.annotation.model.AnnotationPostRequest;
+
+import java.util.ArrayList;
+
+/**
+ * @author Sven Kästle
+ * skaestle@uni-potsdam.de
+ */
+public interface IAnnotation {
+
+    /**
+     * Adds an annotation to a target and returns the new id
+     *
+     * @param annotationPostRequest The annotation post request
+     * @return Returns the new annotation
+     */
+    Annotation addAnnotation(AnnotationPostRequest annotationPostRequest);
+
+    /**
+     * Alters an annotation
+     *
+     * @param annotationId The id of the original annotation
+     * @param annotationPatchRequest The annotation patch request
+     */
+    void alterAnnotation(String annotationId, AnnotationPatchRequest annotationPatchRequest);
+
+    /**
+     * Deletes an annotation
+     *
+     * @param annotationId The id of the annotation
+     */
+    void deleteAnnotation(String annotationId);
+
+    /**
+     * Returns a specific annotation from a target
+     *
+     * @param annotationId The id of the annotation
+     * @return Returns a specific annotation
+     */
+    Annotation getAnnotation(String annotationId);
+
+    /**
+     * Returns all annotations from a target
+     *
+     * @param targetId the target id
+     * @return Returns all annotations
+     */
+    ArrayList<Annotation> getAnnotations(int targetId);
+
+    /**
+     * Checks if an annotation id already exists in the database
+     *
+     * @param annotationId The id of the annotation
+     * @return Returns true if the id exists
+     */
+    boolean existsAnnotationId(String annotationId);
+
+}
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/ICommunication.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/ICommunication.java
index 8a07add14391adf6779942e0225e1c38e30e9b2f..12d3d71183ae34966d1e88a04596095c22eadd42 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/ICommunication.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/ICommunication.java
@@ -22,7 +22,7 @@ public interface ICommunication {
     List<ChatMessage> getChatHistory(String roomId);
 
 
-    boolean sendMessageToChat(Message message);
+    boolean sendMessageToChat(Message message, String roomId);
 
     /**
      * endpoint: https://rocket.chat/docs/developer-guides/rest-api/groups/create/
@@ -44,6 +44,8 @@ public interface ICommunication {
      */
     boolean addUserToChatRoom(String roomId, User user);
 
+    boolean removeUserFromChatRoom(User user, String roomId);
+
     /**
      * endpoint: https://rocket.chat/docs/developer-guides/rest-api/groups/settopic/
      *
@@ -79,4 +81,8 @@ public interface ICommunication {
      */
     boolean registerUser(User user);
 
+    boolean registerAndLoginUser(User user);
+
+    String getChatRoomLink(String userToken, String projectToken, String groupToken);
+
 }
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/IJournal.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/IJournal.java
index af66e583b5f0e93479c44b98e3fb1fdb5145113f..4da8b21c8ed3871d6824944e2f90b1a19315724e 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/IJournal.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/IJournal.java
@@ -1,6 +1,7 @@
 package unipotsdam.gf.interfaces;
 
-import unipotsdam.gf.modules.assessment.controller.StudentIdentifier;
+
+import unipotsdam.gf.modules.assessment.controller.model.StudentIdentifier;
 
 /**
  * Interface for learning journal
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/IPeerAssessment.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/IPeerAssessment.java
index b08418626291d61ab01198c43848c3ce6bc450cd..9a23d8f4d3036c6bd9f728e7d6cc213beaa42fa1 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/IPeerAssessment.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/IPeerAssessment.java
@@ -1,9 +1,9 @@
 package unipotsdam.gf.interfaces;
 
-import unipotsdam.gf.modules.assessment.controller.Assessment;
-import unipotsdam.gf.modules.assessment.controller.Performance;
-import unipotsdam.gf.modules.assessment.controller.Quiz;
-import unipotsdam.gf.modules.assessment.controller.StudentIdentifier;
+import unipotsdam.gf.modules.assessment.controller.model.*;
+
+import java.util.ArrayList;
+import java.util.List;
 
 /**
  * Created by dehne on 18.05.2018.
@@ -17,6 +17,7 @@ public interface IPeerAssessment {
      */
     void addAssessmentDataToDB(Assessment assessment);
 
+    Quiz getQuiz(String projectId, String groupId);
     /**
      * will return a saved assessment from the DB
      *
@@ -28,19 +29,26 @@ public interface IPeerAssessment {
     /**
      * writes a quiz-question into the DB so other students can benefit from another's insights.
      *
-     * @param student
-     * @param quiz
+     * @param studentAndQuiz
      */
-    void createQuiz(StudentIdentifier student, Quiz quiz);
+    void createQuiz(StudentAndQuiz studentAndQuiz);
 
     /**
      * calculate grades for everyone in a list.
      * either it will be overwritten by choice of co- or peer-assessment or it gets a parameter which specifies it.
      *
-     * @param performanceOfAllStudents
+     *
+     * @param totalPerformance @return
+     */
+    List<Grading> calculateAssessment(ArrayList<Performance> totalPerformance); // calculates marks for every performance and writes it to an array
+
+
+    /**
+     *
+     * @param studentIdentifier
      * @return
      */
-    int[] calculateAssessment(Performance[] performanceOfAllStudents); // calculates marks for every performance and writes it to an array
+    ArrayList<Performance> getTotalAssessment(StudentIdentifier studentIdentifier);
 
     /**
      * calculates the mean value of all assessments in a project.
@@ -49,4 +57,21 @@ public interface IPeerAssessment {
      * @return
      */
     int meanOfAssessement(String ProjectId);
+
+    /**
+     * returns all quizzes in a project
+     *
+     * @param projectId
+     * @return all quizzes in projectId
+     */
+    ArrayList<Quiz> getQuiz(String projectId);
+
+    /**
+     * writes the peerRatings into db
+     *
+     * @param projectId
+     * @param groupId
+     * @param peerRatings
+     */
+    void postPeerRating(String projectId, String groupId, ArrayList<PeerRating> peerRatings);
 }
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/annotation/controller/AnnotationController.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/annotation/controller/AnnotationController.java
new file mode 100644
index 0000000000000000000000000000000000000000..4e6bb8e9e71c4f85ec6d31c1a18591f20a09fa30
--- /dev/null
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/annotation/controller/AnnotationController.java
@@ -0,0 +1,181 @@
+package unipotsdam.gf.modules.annotation.controller;
+
+import unipotsdam.gf.core.database.mysql.MysqlConnect;
+import unipotsdam.gf.core.database.mysql.VereinfachtesResultSet;
+import unipotsdam.gf.interfaces.IAnnotation;
+import unipotsdam.gf.modules.annotation.model.Annotation;
+import unipotsdam.gf.modules.annotation.model.AnnotationPatchRequest;
+import unipotsdam.gf.modules.annotation.model.AnnotationPostRequest;
+
+import java.time.ZonedDateTime;
+import java.util.ArrayList;
+import java.util.UUID;
+
+public class AnnotationController implements IAnnotation {
+    @Override
+    public Annotation addAnnotation(AnnotationPostRequest annotationPostRequest) {
+
+        // create a new id if we found no id.
+        String uuid = UUID.randomUUID().toString();
+        while (existsAnnotationId(uuid)) {
+            uuid = UUID.randomUUID().toString();
+        }
+
+        // build the annotation
+        Annotation annotation = new Annotation(uuid,
+                ZonedDateTime.now().toEpochSecond(),
+                annotationPostRequest.getUserId(),
+                annotationPostRequest.getTargetId(),
+                annotationPostRequest.getBody(),
+                annotationPostRequest.getStartCharacter(),
+                annotationPostRequest.getEndCharacter());
+
+        // establish connection
+        MysqlConnect connection = new MysqlConnect();
+        connection.connect();
+
+        // build and execute request
+        String request = "INSERT INTO annotations (`id`, `userId`, `targetId`, `body`, `startCharacter`, `endCharacter`) VALUES (?,?,?,?,?,?);";
+        connection.issueInsertOrDeleteStatement(request, annotation.getId(), annotation.getUserId(), annotation.getTargetId(), annotation.getBody(), annotation.getStartCharacter(), annotation.getEndCharacter());
+
+        // close connection
+        connection.close();
+
+        return annotation;
+
+    }
+
+    @Override
+    public void alterAnnotation(String annotationId, AnnotationPatchRequest annotationPatchRequest) {
+
+        // establish connection
+        MysqlConnect connection = new MysqlConnect();
+        connection.connect();
+
+        // build and execute request
+        String request = "UPDATE `annotations` SET `body` = ? WHERE `id` = ?";
+        connection.issueUpdateStatement(request, annotationPatchRequest.getBody(), annotationId);
+
+        // close connection
+        connection.close();
+
+    }
+
+    @Override
+    public void deleteAnnotation(String annotationId) {
+
+        // establish connection
+        MysqlConnect connection = new MysqlConnect();
+        connection.connect();
+
+        // build and execute request
+        String request = "DELETE FROM annotations WHERE id = ?;";
+        connection.issueInsertOrDeleteStatement(request, annotationId);
+
+        // close connection
+        connection.close();
+
+    }
+
+    @Override
+    public Annotation getAnnotation(String annotationId) {
+
+        // establish connection
+        MysqlConnect connection = new MysqlConnect();
+        connection.connect();
+
+        // build and execute request
+        String request = "SELECT * FROM annotations WHERE id = ?;";
+        VereinfachtesResultSet rs = connection.issueSelectStatement(request, annotationId);
+
+        if (rs.next()) {
+
+             // save annotation
+            Annotation annotation = getAnnotationFromResultSet(rs);
+
+            // close connection
+            connection.close();
+
+            return annotation;
+        }
+        else {
+
+            // close connection
+            connection.close();
+
+            return null;
+        }
+
+    }
+
+    @Override
+    public ArrayList<Annotation> getAnnotations(int targetId) {
+
+        // declare annotation ArrayList
+        ArrayList<Annotation> annotations = new ArrayList<>();
+
+        // establish connection
+        MysqlConnect connection = new MysqlConnect();
+        connection.connect();
+
+        // build and execute request
+        String request = "SELECT * FROM annotations WHERE targetId = ?;";
+        VereinfachtesResultSet rs = connection.issueSelectStatement(request, targetId);
+
+        while (rs.next()) {
+            annotations.add(getAnnotationFromResultSet(rs));
+        }
+
+        // close connection
+        connection.close();
+
+        return annotations;
+
+    }
+
+    @Override
+    public boolean existsAnnotationId(String annotationId) {
+
+        // establish connection
+        MysqlConnect connection = new MysqlConnect();
+        connection.connect();
+
+        // build and execute request
+        String request = "SELECT COUNT(*) > 0 AS `exists` FROM annotations WHERE id = ?;";
+        VereinfachtesResultSet rs = connection.issueSelectStatement(request, annotationId);
+
+        if (rs.next()) {
+            // save the response
+            int count = rs.getInt("exists");
+
+            // close connection
+            connection.close();
+
+            // return true if we found the id
+            if (count < 1) {
+                return false;
+            }
+            else {
+                return true;
+            }
+        }
+
+        // something happened
+        return true;
+
+    }
+
+    private Annotation getAnnotationFromResultSet(VereinfachtesResultSet rs) {
+
+        String id = rs.getString("id");
+        long timestamp = rs.getTimestamp(2).getTime();
+        int userId = rs.getInt("userId");
+        int targetId = rs.getInt("targetId");
+        String body = rs.getString("body");
+        int startCharacter = rs.getInt("startCharacter");
+        int endCharacter = rs.getInt("endCharacter");
+
+        return new Annotation(id, timestamp, userId, targetId, body, startCharacter, endCharacter);
+
+    }
+}
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/annotation/Annotation.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/annotation/model/Annotation.java
similarity index 88%
rename from gemeinsamforschen/src/main/java/unipotsdam/gf/modules/annotation/Annotation.java
rename to gemeinsamforschen/src/main/java/unipotsdam/gf/modules/annotation/model/Annotation.java
index 5535a7b95b14412e5f431d4d1b79c9b6bfdb73bc..725967353f5685e93c53302b7a8a0e799e4ccc12 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/annotation/Annotation.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/annotation/model/Annotation.java
@@ -1,4 +1,4 @@
-package unipotsdam.gf.modules.annotation;
+package unipotsdam.gf.modules.annotation.model;
 
 /**
  * @author Sven Kästle
@@ -7,7 +7,7 @@ package unipotsdam.gf.modules.annotation;
 public class Annotation {
 
     // variables
-    private int id;
+    private String id;
     private long timestamp;
     private int userId;
     private int targetId;
@@ -16,7 +16,7 @@ public class Annotation {
     private int endCharacter;
 
     // constructor
-    public Annotation(int id, long timestamp, int userId, int targetId, String body, int startCharacter, int endCharacter) {
+    public Annotation(String id, long timestamp, int userId, int targetId, String body, int startCharacter, int endCharacter) {
         this.id = id;
         this.timestamp = timestamp;
         this.userId = userId;
@@ -27,11 +27,11 @@ public class Annotation {
     }
 
     // methods
-    public int getId() {
+    public String getId() {
         return id;
     }
 
-    public void setId(int id) {
+    public void setId(String id) {
         this.id = id;
     }
 
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/annotation/model/AnnotationPatchRequest.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/annotation/model/AnnotationPatchRequest.java
new file mode 100644
index 0000000000000000000000000000000000000000..c41e294afda5094833771b48bef3c18656c1f283
--- /dev/null
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/annotation/model/AnnotationPatchRequest.java
@@ -0,0 +1,35 @@
+package unipotsdam.gf.modules.annotation.model;
+
+/**
+ * @author Sven Kästle
+ * skaestle@uni-potsdam.de
+ */
+public class AnnotationPatchRequest {
+
+    // variables
+    private String body;
+
+    // constructors
+    public AnnotationPatchRequest(String body) {
+        this.body = body;
+    }
+
+    public AnnotationPatchRequest() {}
+
+    // methods
+    public String getBody() {
+        return body;
+    }
+
+    public void setBody(String body) {
+        this.body = body;
+    }
+
+    @Override
+    public String toString() {
+        return "AnnotationPatchRequest{" +
+                "body='" + body + '\'' +
+                '}';
+    }
+
+}
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/annotation/model/AnnotationPostRequest.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/annotation/model/AnnotationPostRequest.java
new file mode 100644
index 0000000000000000000000000000000000000000..5459cb5b567c1aa2224642c2ef304007b954ba7e
--- /dev/null
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/annotation/model/AnnotationPostRequest.java
@@ -0,0 +1,79 @@
+package unipotsdam.gf.modules.annotation.model;
+
+/**
+ * @author Sven Kästle
+ * skaestle@uni-potsdam.de
+ */
+public class AnnotationPostRequest {
+
+    // variables
+    private int userId;
+    private int targetId;
+    private String body;
+    private int startCharacter;
+    private int endCharacter;
+
+    // constructors
+    public AnnotationPostRequest(int userId, int targetId, String body, int startCharacter, int endCharacter) {
+        this.userId = userId;
+        this.targetId = targetId;
+        this.body = body;
+        this.startCharacter = startCharacter;
+        this.endCharacter = endCharacter;
+    }
+
+    public AnnotationPostRequest() {
+    }
+
+    // methods
+    public int getUserId() {
+        return userId;
+    }
+
+    public void setUserId(int userId) {
+        this.userId = userId;
+    }
+
+    public int getTargetId() {
+        return targetId;
+    }
+
+    public void setTargetId(int targetId) {
+        this.targetId = targetId;
+    }
+
+    public String getBody() {
+        return body;
+    }
+
+    public void setBody(String body) {
+        this.body = body;
+    }
+
+    public int getStartCharacter() {
+        return startCharacter;
+    }
+
+    public void setStartCharacter(int startCharacter) {
+        this.startCharacter = startCharacter;
+    }
+
+    public int getEndCharacter() {
+        return endCharacter;
+    }
+
+    public void setEndCharacter(int endCharacter) {
+        this.endCharacter = endCharacter;
+    }
+
+    @Override
+    public String toString() {
+        return "AnnotationPostRequest{" +
+                "userId=" + userId +
+                ", targetId=" + targetId +
+                ", body='" + body + '\'' +
+                ", startCharacter=" + startCharacter +
+                ", endCharacter=" + endCharacter +
+                '}';
+    }
+}
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/annotation/model/AnnotationResponse.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/annotation/model/AnnotationResponse.java
new file mode 100644
index 0000000000000000000000000000000000000000..045986bdf8fbd7ccb6a4dadbe1142ade3c3ff9ae
--- /dev/null
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/annotation/model/AnnotationResponse.java
@@ -0,0 +1,37 @@
+package unipotsdam.gf.modules.annotation.model;
+
+/**
+ * @author Sven Kästle
+ * skaestle@uni-potsdam.de
+ */
+public class AnnotationResponse {
+
+    // variables
+    String message;
+
+    // constructors
+    public AnnotationResponse(String message) {
+        this.message = message;
+    }
+
+    public AnnotationResponse() {
+
+    }
+
+    // methods
+    public String getMessage() {
+        return message;
+    }
+
+    public void setMessage(String message) {
+        this.message = message;
+    }
+
+    @Override
+    public String toString() {
+        return "AnnotationResponse{" +
+                "message='" + message + '\'' +
+                '}';
+    }
+
+}
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/annotation/view/AnnotationService.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/annotation/view/AnnotationService.java
new file mode 100644
index 0000000000000000000000000000000000000000..1072cd55891857bc8fa1d2d9ece561f5b105da81
--- /dev/null
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/annotation/view/AnnotationService.java
@@ -0,0 +1,131 @@
+package unipotsdam.gf.modules.annotation.view;
+
+import io.dropwizard.jersey.PATCH;
+import unipotsdam.gf.modules.annotation.controller.AnnotationController;
+import unipotsdam.gf.modules.annotation.model.Annotation;
+import unipotsdam.gf.modules.annotation.model.AnnotationPatchRequest;
+import unipotsdam.gf.modules.annotation.model.AnnotationPostRequest;
+import unipotsdam.gf.modules.annotation.model.AnnotationResponse;
+
+import javax.ws.rs.*;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+import java.util.ArrayList;
+
+/**
+ * @author Sven Kästle
+ * skaestle@uni-potsdam.de
+ */
+@Path("/annotations")
+@Consumes(MediaType.APPLICATION_JSON)
+@Produces(MediaType.APPLICATION_JSON)
+public class AnnotationService {
+
+    @POST
+    public Response createAnnotation(AnnotationPostRequest request) {
+
+        // save annotation request in database and receive the new annotation object
+        AnnotationController controller = new AnnotationController();
+        Annotation annotation = controller.addAnnotation(request);
+
+        return Response.ok(annotation).build();
+
+    }
+
+    @PATCH
+    @Path("{id}")
+    public Response alterAnnotation(@PathParam("id") String annotationId, AnnotationPatchRequest request) {
+
+        // declare response
+        AnnotationResponse response = new AnnotationResponse();
+
+        // check if annotation exists
+        AnnotationController controller = new AnnotationController();
+        boolean exists = controller.existsAnnotationId(annotationId);
+
+        if (exists) {
+            // alter annotation and response 200
+            controller.alterAnnotation(annotationId, request);
+            response.setMessage("Altered the annotation with the id " + annotationId);
+
+            return Response.ok(response).build();
+        }
+        else {
+            // no annotation with the given id, response 404
+            response.setMessage("Annotation with the id '" + annotationId + "' can't be found");
+
+            return Response.status(Response.Status.NOT_FOUND).entity(response).build();
+        }
+
+    }
+
+    @DELETE
+    @Path("{id}")
+    public Response deleteAnnotation(@PathParam("id") String annotationId) {
+
+        // declare response
+        AnnotationResponse response = new AnnotationResponse();
+
+        // check if annotation exists
+        AnnotationController controller = new AnnotationController();
+        boolean exists = controller.existsAnnotationId(annotationId);
+
+        if (exists) {
+            // delete annotation and response 200
+            controller.deleteAnnotation(annotationId);
+            response.setMessage("Deleted the annotation with the id " + annotationId);
+
+            return Response.ok(response).build();
+        }
+        else {
+            // no annotation with the given id, response 404
+            response.setMessage("Annotation with the id '" + annotationId + "' can't be found");
+
+            return Response.status(Response.Status.NOT_FOUND).entity(response).build();
+        }
+
+    }
+
+    @GET
+    @Path("{id}")
+    public Response getAnnotation(@PathParam("id") String annotationId) {
+
+        // receive the annotation
+        AnnotationController controller = new AnnotationController();
+        Annotation annotation = controller.getAnnotation(annotationId);
+
+        if (annotation != null) {
+            return Response.ok(annotation).build();
+        }
+        else {
+            // declare response
+            AnnotationResponse response = new AnnotationResponse();
+            response.setMessage("Annotation with the id '" + annotationId + "' can't be found");
+
+            return Response.status(Response.Status.NOT_FOUND).entity(response).build();
+        }
+
+    }
+
+    @GET
+    @Path("/target/{id}")
+    public Response getAnnotations(@PathParam("id") int targetId) {
+
+        // receive the annotation
+        AnnotationController controller = new AnnotationController();
+        ArrayList<Annotation> annotations = controller.getAnnotations(targetId);
+
+        if (!annotations.isEmpty()) {
+            return Response.ok(annotations).build();
+        }
+        else {
+            // declare response
+            AnnotationResponse response = new AnnotationResponse();
+            response.setMessage("Found no annotations for the target id '" + targetId + "'");
+
+            return Response.status(Response.Status.NOT_FOUND).entity(response).build();
+        }
+
+    }
+
+}
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/FBAssessement.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/FBAssessement.java
deleted file mode 100644
index 0890abdcf4ddf3d7fcb7dd8c599fbb097c41b4c3..0000000000000000000000000000000000000000
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/FBAssessement.java
+++ /dev/null
@@ -1,41 +0,0 @@
-package unipotsdam.gf.modules.assessment.controller;
-
-/**
- * Created by dehne on 18.05.2018.
- */
-public class FBAssessement extends AssessmentDAO {
-
-    @Override
-    public void addAssessmentDataToDB(Assessment assessment) {
-        // write it to db
-    }
-
-    @Override
-    public void createQuiz(StudentIdentifier student, Quiz quiz) {
-
-    }
-
-
-    @Override
-    public int[] calculateAssessment(Performance[] performanceOfAllStudents){ // calculates marks for every performance and writes it to an array
-        int[] dummy = new int[4];
-        dummy[0]=1;
-        dummy[1]=4;
-        dummy[2]=3;
-        dummy[3]=2;
-        return dummy;
-    }
-
-    public void createQuiz(StudentIdentifier student, String question, String[] answers){  //writes a new question into the DB
-
-    }
-
-    public boolean permission(int feedbackCount){
-        return true;
-    }
-
-    @Override
-    public int meanOfAssessement(String projectId) {
-        return 0;
-    }
-}
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/Assessment.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/model/Assessment.java
similarity index 75%
rename from gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/Assessment.java
rename to gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/model/Assessment.java
index bfd450bcdae514d309b19919e39e50557df956ef..7b269aa7f1059c0446d314714ffb38761f1d8e94 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/Assessment.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/model/Assessment.java
@@ -1,4 +1,9 @@
-package unipotsdam.gf.modules.assessment.controller;
+package unipotsdam.gf.modules.assessment.controller.model;
+
+import javax.xml.bind.annotation.XmlRootElement;
+import java.util.ArrayList;
+
+@XmlRootElement
 
 public class Assessment {
     private StudentIdentifier student;
@@ -9,6 +14,10 @@ public class Assessment {
         this.performance = performance;
     }
 
+    public Assessment(){}
+
+    public ArrayList<Performance> getTotalAssessment() { return null; }
+
     public StudentIdentifier getStudent() {
         return student;
     }
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/model/Grading.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/model/Grading.java
new file mode 100644
index 0000000000000000000000000000000000000000..81cbafa7df8add48d8c1c5bb7469984ca12915c3
--- /dev/null
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/model/Grading.java
@@ -0,0 +1,38 @@
+package unipotsdam.gf.modules.assessment.controller.model;
+
+public class Grading {
+    private StudentIdentifier studentIdentifier;
+    private double grade;
+
+    public Grading(){}
+
+    public Grading(StudentIdentifier studentIdentifier, double grade) {
+        this.studentIdentifier = studentIdentifier;
+        this.grade = grade;
+    }
+
+    public double getGrade() {
+        return grade;
+    }
+
+    public void setGrade(int grade) {
+        this.grade = grade;
+    }
+
+    public StudentIdentifier getStudentIdentifier() {
+        return studentIdentifier;
+    }
+
+    public void setStudentIdentifier(StudentIdentifier studentIdentifier) {
+        this.studentIdentifier = studentIdentifier;
+    }
+
+    @Override
+    public String toString() {
+        return "Grading{" +
+                "studentIdentifier=" + studentIdentifier +
+                ", grade=" + grade +
+                '}';
+    }
+
+}
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/model/PeerRating.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/model/PeerRating.java
new file mode 100644
index 0000000000000000000000000000000000000000..80d35be34f8e6208f5c436d267e4d6e93b391129
--- /dev/null
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/model/PeerRating.java
@@ -0,0 +1,51 @@
+package unipotsdam.gf.modules.assessment.controller.model;
+
+import java.util.Arrays;
+
+public class PeerRating {
+    private String fromPeer;
+    private String toPeer;
+    private int[] workRating;
+
+    @Override
+    public String toString() {
+        return "PeerRating{" +
+                "fromPeer='" + fromPeer + '\'' +
+                ", toPeer='" + toPeer + '\'' +
+                ", workRating=" + Arrays.toString(workRating) +
+                '}';
+    }
+
+    public String getFromPeer() {
+        return fromPeer;
+    }
+
+    public PeerRating() {
+    }
+
+    public void setFromPeer(String fromPeer) {
+        this.fromPeer = fromPeer;
+    }
+
+    public String getToPeer() {
+        return toPeer;
+    }
+
+    public void setToPeer(String toPeer) {
+        this.toPeer = toPeer;
+    }
+
+    public int[] getWorkRating() {
+        return workRating;
+    }
+
+    public void setWorkRating(int[] workRating) {
+        this.workRating = workRating;
+    }
+
+    public PeerRating(String fromPeer, String toPeer, int[] workRating) {
+        this.fromPeer = fromPeer;
+        this.toPeer = toPeer;
+        this.workRating = workRating;
+    }
+}
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/Performance.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/model/Performance.java
similarity index 53%
rename from gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/Performance.java
rename to gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/model/Performance.java
index 7e05864f14a3ca635153d0e1622abac7de3f67cd..41a74ef307f07b7f2953183ac2f1b18eba61159e 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/Performance.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/model/Performance.java
@@ -1,16 +1,29 @@
-package unipotsdam.gf.modules.assessment.controller;
+package unipotsdam.gf.modules.assessment.controller.model;
 
 import java.util.Arrays;
 
 public class Performance {
+    private StudentIdentifier studentIdentifier;
     private int[] quizAnswer;
     private String feedback;
     private int[] workRating;
 
-    public Performance(int[] quizAnswer, String feedback, int[] workRating) {
-        this.quizAnswer = quizAnswer;
-        this.feedback = feedback;
-        this.workRating = workRating;
+    public Performance(){}
+
+    public Performance(StudentIdentifier student, int[] quiz, String feedback, int[] workRating) {
+        this.studentIdentifier = student;
+        this.quizAnswer = quiz;
+        this.feedback=feedback;
+        this.workRating=workRating;
+
+    }
+
+    public StudentIdentifier getStudentIdentifier() {
+        return studentIdentifier;
+    }
+
+    public void setStudentIdentifier(StudentIdentifier studentIdentifier) {
+        this.studentIdentifier = studentIdentifier;
     }
 
     public int[] getQuizAnswer() {
@@ -37,12 +50,15 @@ public class Performance {
         this.workRating = workRating;
     }
 
+
     @Override
     public String toString() {
         return "Performance{" +
-                "quizAnswer=" + Arrays.toString(quizAnswer) +
+                "studentIdentifier=" + studentIdentifier +
+                ", quizAnswer=" + Arrays.toString(quizAnswer) +
                 ", feedback='" + feedback + '\'' +
                 ", workRating=" + Arrays.toString(workRating) +
                 '}';
     }
+
 }
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/Quiz.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/model/Quiz.java
similarity index 88%
rename from gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/Quiz.java
rename to gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/model/Quiz.java
index cc3bab9653370c44cc1a7074c61c369c1a1429ae..7abafb133a623a85028716af0e484734f06c93d9 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/Quiz.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/model/Quiz.java
@@ -1,4 +1,8 @@
-package unipotsdam.gf.modules.assessment.controller;
+package unipotsdam.gf.modules.assessment.controller.model;
+
+import javax.xml.bind.annotation.XmlRootElement;
+
+@XmlRootElement
 
 public class Quiz {
     private String type;
@@ -12,6 +16,7 @@ public class Quiz {
         this.correctAnswers = correctAnswers;
         this.incorrectAnswers = incorrectAnswers;
     }
+    public Quiz(){}
 
     public String[] getIncorrectAnswers() {
         return incorrectAnswers;
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/model/StudentAndQuiz.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/model/StudentAndQuiz.java
new file mode 100644
index 0000000000000000000000000000000000000000..4f5f5c0976bffc1bc51602c7c1cc886f294ac1d5
--- /dev/null
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/model/StudentAndQuiz.java
@@ -0,0 +1,38 @@
+package unipotsdam.gf.modules.assessment.controller.model;
+
+public class StudentAndQuiz {
+    @Override
+    public String toString() {
+        return "StudentAndQuiz{" +
+                "studentIdentifier=" + studentIdentifier +
+                ", quiz=" + quiz +
+                '}';
+    }
+
+    public StudentAndQuiz(){}
+
+    private StudentIdentifier studentIdentifier;
+
+    public StudentIdentifier getStudentIdentifier() {
+        return studentIdentifier;
+    }
+
+    public void setStudentIdentifier(StudentIdentifier studentIdentifier) {
+        this.studentIdentifier = studentIdentifier;
+    }
+
+    public Quiz getQuiz() {
+        return quiz;
+    }
+
+    public void setQuiz(Quiz quiz) {
+        this.quiz = quiz;
+    }
+
+    private Quiz quiz;
+
+    public StudentAndQuiz(StudentIdentifier studentIdentifier, Quiz quiz) {
+        this.studentIdentifier = studentIdentifier;
+        this.quiz = quiz;
+    }
+}
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/StudentIdentifier.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/model/StudentIdentifier.java
similarity index 88%
rename from gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/StudentIdentifier.java
rename to gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/model/StudentIdentifier.java
index 05799b86895153a95fce2fe5e2243f622c0e7df4..22206d27bf157dcefbb5106a3de74af3cfe68050 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/StudentIdentifier.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/model/StudentIdentifier.java
@@ -1,4 +1,4 @@
-package unipotsdam.gf.modules.assessment.controller;
+package unipotsdam.gf.modules.assessment.controller.model;
 
 public class StudentIdentifier {
     private String projectId;
@@ -9,6 +9,9 @@ public class StudentIdentifier {
         this.studentId = studentId;
     }
 
+    public StudentIdentifier() {
+    }
+
     public String getProjectId() {
         return projectId;
     }
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/AssessmentDAO.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/AssessmentDAO.java
similarity index 57%
rename from gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/AssessmentDAO.java
rename to gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/AssessmentDAO.java
index ed7b43d3a6eff9b5a21da1c95feadbb73fefc973..554c9f998dc3f87885b4a36a82b8b955cf1f29e5 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/AssessmentDAO.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/AssessmentDAO.java
@@ -1,7 +1,9 @@
-package unipotsdam.gf.modules.assessment.controller;
+package unipotsdam.gf.modules.assessment.controller.service;
 
 
 import unipotsdam.gf.interfaces.IPeerAssessment;
+import unipotsdam.gf.modules.assessment.controller.model.Assessment;
+import unipotsdam.gf.modules.assessment.controller.model.StudentIdentifier;
 
 /**
  * Created by dehne on 18.05.2018.
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/FBAssessement.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/FBAssessement.java
new file mode 100644
index 0000000000000000000000000000000000000000..3368ce839633cd4e5172cffdad36fca4031604cb
--- /dev/null
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/FBAssessement.java
@@ -0,0 +1,60 @@
+package unipotsdam.gf.modules.assessment.controller.service;
+
+import unipotsdam.gf.modules.assessment.controller.model.*;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Created by dehne on 18.05.2018.
+ */
+public class FBAssessement extends AssessmentDAO {
+
+    @Override
+    public void addAssessmentDataToDB(Assessment assessment) {
+        // write it to db
+    }
+
+    @Override
+    public Quiz getQuiz(String projectId, String groupId) {
+        return null;
+    }
+
+    @Override
+    public void createQuiz(StudentAndQuiz studentAndQuiz) {
+
+    }
+
+    @Override
+    public List<Grading> calculateAssessment(ArrayList<Performance> totalPerformance) {
+        return null;
+    }
+
+    @Override
+    public ArrayList<Performance> getTotalAssessment(StudentIdentifier studentIdentifier) {
+        return null;
+    }
+
+    public void createQuiz(StudentIdentifier student, String question, String[] answers){  //writes a new question into the DB
+
+    }
+
+    public boolean permission(int feedbackCount){
+        return true;
+    }
+
+    @Override
+    public int meanOfAssessement(String projectId) {
+        return 0;
+    }
+
+    @Override
+    public ArrayList<Quiz> getQuiz(String projectId) {
+        return null;
+    }
+
+    @Override
+    public void postPeerRating(String projectId, String groupId, ArrayList<PeerRating> peerRatings) {
+
+    }
+}
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/PeerAssessment.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/PeerAssessment.java
new file mode 100644
index 0000000000000000000000000000000000000000..418f4fed993a364cb82b9ea4793dc066d9a9b75f
--- /dev/null
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/PeerAssessment.java
@@ -0,0 +1,54 @@
+package unipotsdam.gf.modules.assessment.controller.service;
+
+import unipotsdam.gf.interfaces.IPeerAssessment;
+import unipotsdam.gf.modules.assessment.controller.model.*;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class PeerAssessment implements IPeerAssessment {
+    @Override
+    public void addAssessmentDataToDB(Assessment assessment) {
+
+    }
+
+    @Override
+    public Quiz getQuiz(String projectId, String groupId) {
+        return null;
+    }
+
+    @Override
+    public Assessment getAssessmentDataFromDB(StudentIdentifier student) {
+        return null;
+    }
+
+    @Override
+    public void createQuiz(StudentAndQuiz studentAndQuiz) {
+
+    }
+
+    @Override
+    public List<Grading> calculateAssessment(ArrayList<Performance> totalPerformance) {
+        return null;
+    }
+
+    @Override
+    public ArrayList<Performance> getTotalAssessment(StudentIdentifier studentIdentifier) {
+        return null;
+    }
+
+    @Override
+    public int meanOfAssessement(String ProjectId) {
+        return 0;
+    }
+
+    @Override
+    public ArrayList<Quiz> getQuiz(String projectId) {
+        return null;
+    }
+
+    @Override
+    public void postPeerRating(String projectId, String groupId, ArrayList<PeerRating> peerRatings) {
+
+    }
+}
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/PeerAssessmentDummy.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/PeerAssessmentDummy.java
new file mode 100644
index 0000000000000000000000000000000000000000..6d7e933916299299ee0c696da4ec8b372bf18848
--- /dev/null
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/PeerAssessmentDummy.java
@@ -0,0 +1,108 @@
+package unipotsdam.gf.modules.assessment.controller.service;
+
+import unipotsdam.gf.interfaces.IPeerAssessment;
+import unipotsdam.gf.modules.assessment.controller.model.*;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+public class PeerAssessmentDummy implements IPeerAssessment {
+    @Override
+    public void addAssessmentDataToDB(Assessment assessment) {
+    }
+
+    @Override
+    public Quiz getQuiz(String projectId, String quizId) {
+        String[] correctAnswers = new String[2];
+        Quiz sampleQuiz;
+        if (quizId.equals("2")) {
+            correctAnswers[0] = "42";
+            correctAnswers[1] = "" + projectId + " " + quizId;
+            String[] wrongAnswers = {"a god created creature", "a sum of my mistakes"};
+            sampleQuiz = new Quiz("multiple", "Who am I and if so, how many?", correctAnswers, wrongAnswers);
+        } else {
+            correctAnswers[0] = "ja, nicht?!";
+            correctAnswers[1] = "nee, oder doch?!";
+            String[] wrongAnswers = {"Mephistopheles", "Der alte Hexenmeister!?", "Der Schimmelreiter", "alle beide"};
+            sampleQuiz = new Quiz("multiple", "Ist das nun des Pudels wahrer Kern?", correctAnswers, wrongAnswers);
+        }
+
+        return sampleQuiz;
+    }
+
+    public ArrayList<Quiz> getQuiz(String projectId) {
+        String[] correctAnswers1 = new String[2];
+        ArrayList<Quiz> sampleQuiz = new ArrayList<Quiz>();
+        correctAnswers1[0] = "42";
+        correctAnswers1[1] = "" + projectId + " 24";
+        String[] wrongAnswers = {"a god created creature", "a sum of my mistakes"};
+        sampleQuiz.add(new Quiz("multiple", "Who am I and if so, how many?", correctAnswers1, wrongAnswers));
+
+        String[] correctAnswers2 = new String[2];
+        correctAnswers2[0] = "ja, nicht?!";
+        correctAnswers2[1] = "nee, oder doch?!";
+        wrongAnswers = new String[]{"Mephistopheles", "Der alte Hexenmeister!?", "Der Schimmelreiter", "alle beide"};
+        sampleQuiz.add(new Quiz("multiple", "Ist das nun des Pudels wahrer Kern?", correctAnswers2, wrongAnswers));
+
+        return sampleQuiz;
+}
+
+    @Override
+    public void postPeerRating(String projectId, String groupId, ArrayList<PeerRating> peerRatings) {
+        int breakpoint = 0;
+    }
+
+    @Override
+    public Assessment getAssessmentDataFromDB(StudentIdentifier student) {
+        int[] quizAnswer = {1, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1};
+        int[] workRating = {1, 5, 3, 4, 1, 5, 5};
+        Performance performance = new Performance(student, quizAnswer, "what a nice guy", workRating);
+        Assessment assessment = new Assessment(student, performance);
+        return assessment;
+    }
+
+    @Override
+    public void createQuiz(StudentAndQuiz studentAndQuiz) {
+    }
+
+    @Override
+    public List<Grading> calculateAssessment(ArrayList<Performance> totalPerformance) {
+        double[] allAssessements = new double[totalPerformance.size()];
+        Grading[] grading = new Grading[totalPerformance.size()];
+
+        for (int i = 0; i < totalPerformance.size(); i++) {
+            for (int j = 0; j < totalPerformance.get(i).getQuizAnswer().length; j++) {
+                allAssessements[i] += totalPerformance.get(i).getQuizAnswer()[j];
+            }
+            allAssessements[i] = allAssessements[i] / totalPerformance.get(i).getQuizAnswer().length;
+        }
+        for (int i = 0; i < totalPerformance.size(); i++) {
+            Grading shuttle = new Grading(totalPerformance.get(i).getStudentIdentifier(), allAssessements[i]);
+            grading[i] = shuttle;
+        }
+        return Arrays.asList(grading);
+    }
+
+    @Override
+    public ArrayList<Performance> getTotalAssessment(StudentIdentifier studentIdentifier) {
+        StudentIdentifier[] students = new StudentIdentifier[2];
+        StudentIdentifier student1 = new StudentIdentifier("gemeinsamForschen", "Haralf");
+        StudentIdentifier student2 = new StudentIdentifier("gemeinsamForschen", "Regine");
+        ArrayList<Performance> performances = new ArrayList<Performance>();
+        int[] quiz = {1, 0, 1, 0, 0, 0, 1};
+        int[] quiz2 = {0, 1, 0, 1, 1, 1, 0};
+        int[] work = {5, 4, 3, 2, 1};
+        int[] work2 = {1, 2, 3, 4, 5};
+        Performance performance = new Performance(student1, quiz, "toller dude", work);
+        performances.add(performance);
+        performance = new Performance(student2, quiz2, "tolle dudine", work2);
+        performances.add(performance);
+        return performances;
+    }
+
+    @Override
+    public int meanOfAssessement(String ProjectId) {
+        return 0;
+    }
+}
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/view/QuizView.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/view/QuizView.java
new file mode 100644
index 0000000000000000000000000000000000000000..077ebb237b82d80b98d3ac19911fba729d5494ea
--- /dev/null
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/view/QuizView.java
@@ -0,0 +1,118 @@
+package unipotsdam.gf.modules.assessment.controller.view;
+
+import unipotsdam.gf.interfaces.IPeerAssessment;
+import unipotsdam.gf.modules.assessment.controller.model.*;
+import unipotsdam.gf.modules.assessment.controller.service.PeerAssessmentDummy;
+
+import javax.ws.rs.*;
+import javax.ws.rs.core.MediaType;
+import java.util.ArrayList;
+import java.util.List;
+
+@Path("/assessments")
+public class QuizView implements IPeerAssessment {
+    private static IPeerAssessment peer =  new PeerAssessmentDummy();
+    @GET
+    @Produces(MediaType.APPLICATION_JSON)
+    @Path("/project/{projectId}/quiz/{quizId}")
+    @Override
+    public Quiz getQuiz(@PathParam("projectId") String projectId, @PathParam("quizId") String quizId) {
+        return peer.getQuiz(projectId, quizId);
+    }  ///////////////////////////////funktioniert wie geplant//////////////////////////////////
+
+    @GET
+    @Produces(MediaType.APPLICATION_JSON)
+    @Path("/project/{projectId}/quiz")
+    @Override
+    public ArrayList<Quiz> getQuiz(@PathParam("projectId") String projectId) {
+        return peer.getQuiz(projectId);
+    }
+
+    @POST
+    @Consumes(MediaType.APPLICATION_JSON)
+    @Path("/peer/project/{projectId}/group/{groupId}")
+    @Override
+    public void postPeerRating(@PathParam("projectId") String projectId, @PathParam("groupId") String groupId, ArrayList<PeerRating> peerRatings){
+        peer.postPeerRating(projectId,groupId,peerRatings);
+    }
+
+    @POST
+    @Produces(MediaType.TEXT_PLAIN)
+    @Consumes(MediaType.APPLICATION_JSON)
+    @Path("/assessment")
+    @Override
+    public void addAssessmentDataToDB(Assessment assessment) {
+        peer.addAssessmentDataToDB(assessment);
+    }
+
+
+    @Override
+    public Assessment getAssessmentDataFromDB(StudentIdentifier student){
+        return peer.getAssessmentDataFromDB(student);
+    }
+
+    @GET
+    @Produces(MediaType.APPLICATION_JSON)
+    @Path("/project/{projectId}/student/{studentId}")
+    public Assessment getAssessmentDataFromDB(@PathParam("projectId") String projectId,@PathParam("studentId") String studentId){
+        StudentIdentifier student = new StudentIdentifier(projectId, studentId);
+        return getAssessmentDataFromDB(student);
+    }  ///////////////////////////////funktioniert wie geplant//////////////////////////////////
+
+
+    @POST
+    @Consumes(MediaType.APPLICATION_JSON)
+    @Produces(MediaType.APPLICATION_JSON)
+    @Path("/quiz")
+    @Override
+    public void createQuiz(StudentAndQuiz studentAndQuiz) {
+        peer.createQuiz(studentAndQuiz);
+    }
+
+    @POST
+    @Consumes(MediaType.APPLICATION_JSON)
+    @Produces(MediaType.APPLICATION_JSON)
+    @Path("/calculate")
+    @Override
+    public List<Grading> calculateAssessment(ArrayList<Performance> totalPerformance) {
+        return peer.calculateAssessment(totalPerformance);
+    }
+
+    @GET
+    @Produces(MediaType.APPLICATION_JSON)
+    @Path("/mean/project/{projectId}")
+    @Override
+    public int meanOfAssessement(@PathParam("projectId") String ProjectId) {
+
+        return peer.meanOfAssessement(ProjectId);
+    }  ///////////////////////////////return 0//////////////////////////////////
+
+    @GET
+    @Produces(MediaType.APPLICATION_JSON)
+    @Path("/total/project/{projectId}/student/{student}")
+    public ArrayList<Performance> getTotalAssessment(@PathParam("projectId") String ProjectId,@PathParam("student") String student){
+        StudentIdentifier studentIdentifier = new StudentIdentifier(ProjectId, student);
+        return getTotalAssessment(studentIdentifier);
+    }  ///////////////////////////////funktioniert wie geplant//////////////////////////////////
+
+    @Override
+    public ArrayList<Performance> getTotalAssessment(StudentIdentifier studentIdentifier) {
+        return peer.getTotalAssessment(studentIdentifier);
+    }  ///////////////////////////////funktioniert wie geplant//////////////////////////////////
+
+
+    @GET
+    @Produces(MediaType.APPLICATION_JSON)
+    @Path("/dummy/totalperformance")
+    public List<Performance> getTotalAssessment() {
+        ArrayList<Performance> result = new ArrayList<>();
+        StudentIdentifier student = new StudentIdentifier("projekt","student");
+        int[] quiz = {1,0,1,1,1,0};
+        Performance pf = new Performance(student,quiz,"toller dude",quiz);
+        Performance pf2 = new Performance(student,quiz,"super",quiz);
+        result.add(pf);
+        result.add(pf2);
+        return result;
+    }  ///////////////////////////////returns what i expect it to return!!!!!//////////////////////////////////
+
+}
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/communication/ChatWindow.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/communication/ChatWindow.java
new file mode 100644
index 0000000000000000000000000000000000000000..9fa51312f3f086cdacfd1dd25bc21612dccffbc8
--- /dev/null
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/communication/ChatWindow.java
@@ -0,0 +1,40 @@
+package unipotsdam.gf.modules.communication;
+
+import unipotsdam.gf.core.management.ManagementImpl;
+import unipotsdam.gf.interfaces.ICommunication;
+import unipotsdam.gf.modules.communication.service.CommunicationDummyService;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.jsp.JspWriter;
+import javax.servlet.jsp.PageContext;
+import javax.servlet.jsp.tagext.SimpleTagSupport;
+import java.io.IOException;
+
+public class ChatWindow extends SimpleTagSupport {
+
+    private String orientation;
+
+    public void doTag() throws IOException {
+        PageContext pageContext = (PageContext) getJspContext();
+        HttpServletRequest request = (HttpServletRequest) pageContext.getRequest();
+        String token = request.getParameter("token");
+        ManagementImpl management = new ManagementImpl();
+        //User user = management.getUserByToken(token);
+        String groupToken = request.getParameter("groupToken");
+        String projectToken = request.getParameter("projectToken");
+        //get ProjetbyToken
+        ICommunication communicationService = new CommunicationDummyService();
+        String chatRoomLink = communicationService.getChatRoomLink(token,projectToken,groupToken);
+
+        JspWriter out = getJspContext().getOut();
+        out.println("<iframe width=\"30%\" height=\"100%\" src=\""+chatRoomLink+"\"/>");
+    }
+
+    public void setOrientation(String orientation) {
+        this.orientation = orientation;
+    }
+
+    public String getOrientation() {
+        return orientation;
+    }
+}
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/communication/service/CommunicationDummyService.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/communication/service/CommunicationDummyService.java
index f659a3620b974c75bbf237c2453b4b30c92d1356..3d989429228f1c213263794b0df7c741f87507cb 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/communication/service/CommunicationDummyService.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/communication/service/CommunicationDummyService.java
@@ -1,46 +1,68 @@
 package unipotsdam.gf.modules.communication.service;
 
+import unipotsdam.gf.config.Constants;
+import unipotsdam.gf.core.management.Management;
 import unipotsdam.gf.core.management.user.User;
 import unipotsdam.gf.interfaces.ICommunication;
 import unipotsdam.gf.modules.communication.model.Message;
 import unipotsdam.gf.modules.communication.model.chat.ChatMessage;
 import unipotsdam.gf.modules.communication.model.chat.ChatRoom;
 
+import javax.annotation.ManagedBean;
+import javax.annotation.Resource;
+import javax.inject.Inject;
+import javax.inject.Singleton;
 import java.time.Instant;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Objects;
 
+@Resource
+@ManagedBean
+@Singleton
 public class CommunicationDummyService implements ICommunication {
 
+    @Inject
+    Management managementService;
+
     @Override
     public List<ChatMessage> getChatHistory(String roomId) {
         ArrayList<ChatMessage> chatMessages = new ArrayList<>();
         int maxValue = 6;
-        for (int i = 1;i <= maxValue;i++) {
-            chatMessages.add(new ChatMessage(String.valueOf(i+1), "Dies ist ein Test" + i + " .",
-                    Instant.now().minusSeconds(maxValue * 10 - i * 10),"testUser" + i));
+        for (int i = 1; i <= maxValue; i++) {
+            chatMessages.add(new ChatMessage(String.valueOf(i), "Dies ist ein Test " + i + ".",
+                    Instant.now().minusSeconds(maxValue * 10 - i * 10), "testUser" + i));
         }
         return chatMessages;
     }
 
     @Override
-    public boolean sendMessageToChat(Message message) {
-        throw new RuntimeException("Do not call this method without implementation");
+    public boolean sendMessageToChat(Message message, String roomId) {
+        return true;
     }
 
     @Override
     public String createChatRoom(String name, List<User> users) {
+        if (Objects.isNull(users)) {
+            return "2";
+        }
+
         return "1";
     }
 
     @Override
     public boolean addUserToChatRoom(String roomId, User user) {
-        throw new RuntimeException("Do not call this method without implementation");
+        return true;
+    }
+
+    @Override
+    public boolean removeUserFromChatRoom(User user, String roomId) {
+        return true;
     }
 
     @Override
     public boolean setChatRoomTopic(String roomId, String topic) {
-        throw new RuntimeException("Do not call this method without implementation");
+        return true;
     }
 
     @Override
@@ -50,7 +72,6 @@ public class CommunicationDummyService implements ICommunication {
 
     @Override
     public boolean loginUser(User user) {
-        user.setRocketChatId("1");
         user.setRocketChatAuthToken("abc");
         return true;
     }
@@ -60,4 +81,28 @@ public class CommunicationDummyService implements ICommunication {
         user.setRocketChatId("1");
         return true;
     }
+
+    @Override
+    public boolean registerAndLoginUser(User user) {
+        // TODO: try to login user first --> if it fails there is no user, register afterwards or add exists function
+        if (!registerUser(user)) {
+            return false;
+        }
+        return loginUser(user);
+
+    }
+
+    public String getChatRoomLink(String userToken, String projectToken, String groupToken) {
+        //User user = managementService.getUserByToken(userToken);
+        // TODO: Implement getProjectbyToken and getGroupByToken
+        //Project project = managementService.getProject(projectToken
+        String channelName = "general";
+        return Constants.ROCKET_CHAT_URL + "/channel/" + channelName + "?layout=embedded";
+    }
+
+    // TODO: remove after done implementing
+    // just for postman testing
+    public User getUser() {
+        return new User("Martin Stähr", "test", "test@test.com", true);
+    }
 }
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/communication/view/CommunicationView.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/communication/view/CommunicationView.java
new file mode 100644
index 0000000000000000000000000000000000000000..bc2c6ff9fa0638e8a8feb9c12b902f545c19dfe4
--- /dev/null
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/communication/view/CommunicationView.java
@@ -0,0 +1,186 @@
+package unipotsdam.gf.modules.communication.view;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import unipotsdam.gf.core.management.user.User;
+import unipotsdam.gf.interfaces.ICommunication;
+import unipotsdam.gf.modules.communication.model.Message;
+import unipotsdam.gf.modules.communication.model.chat.ChatMessage;
+import unipotsdam.gf.modules.communication.model.chat.ChatRoom;
+import unipotsdam.gf.modules.communication.service.CommunicationDummyService;
+
+import javax.annotation.ManagedBean;
+import javax.inject.Inject;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.QueryParam;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+import java.util.List;
+
+import static java.util.Objects.isNull;
+
+@Path("/chat")
+@ManagedBean
+public class CommunicationView {
+
+    private static final Logger log = LoggerFactory.getLogger(CommunicationView.class);
+
+    @Inject
+    private ICommunication communicationService;
+
+    @GET
+    @Produces(MediaType.APPLICATION_JSON)
+    @Path("/info/{roomId}")
+    public Response getChatRoomInformation(@PathParam("roomId") String roomId) {
+        ChatRoom chatRoom = communicationService.getChatRoomInfo(roomId);
+        if (isNull(chatRoom)) {
+            log.error("chatRoom not found for roomId: {}", roomId);
+            return Response.status(Response.Status.NOT_FOUND).build();
+        }
+        log.trace("getChatRoomInformationResponse: {}", chatRoom);
+        return Response.ok(chatRoom).build();
+    }
+
+    @GET
+    @Produces(MediaType.APPLICATION_JSON)
+    @Path("/history/{roomId}")
+    public Response getChatHistory(@PathParam("roomId") String roomId) {
+        List<ChatMessage> chatMessages = communicationService.getChatHistory(roomId);
+        if (isNull(chatMessages)) {
+            log.error("getChatHistory: chatRoom not found for roomId: {}", roomId);
+            return Response.status(Response.Status.NOT_FOUND).build();
+        }
+        log.trace("response for getChatHistory: {}", chatMessages);
+        return Response.ok(chatMessages).build();
+    }
+
+    @POST
+    @Consumes(MediaType.APPLICATION_JSON)
+    @Produces(MediaType.APPLICATION_JSON)
+    @Path("/send/{roomId}")
+    public Response sendMessage(Message message, @PathParam("roomId") String roomId) {
+        if (isNull(message)) {
+            log.trace("sendMessage message object was null");
+            return Response.status(Response.Status.BAD_REQUEST).entity("must provide message").build();
+        }
+        boolean wasSend = communicationService.sendMessageToChat(message, roomId);
+        Response response;
+        if (wasSend) {
+            log.trace("response for sendMessage: {}", wasSend);
+            response = Response.ok(wasSend).build();
+        } else {
+            log.error("error while sending message for message: {}", message);
+            response = Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity("error while sending message").build();
+        }
+        return response;
+    }
+
+    @POST
+    @Consumes(MediaType.APPLICATION_JSON)
+    @Produces(MediaType.APPLICATION_JSON)
+    @Path("/addUser/{roomId}")
+    public Response addUserToChatRoom(@PathParam("roomId") String roomId, User user) {
+        if (isNull(user)) {
+            log.trace("addUser user object was null");
+            return Response.status(Response.Status.BAD_REQUEST).entity("must provide user").build();
+        }
+        boolean wasAdded = communicationService.addUserToChatRoom(roomId, user);
+        if (isNull(wasAdded)) {
+            log.error("addUserToChatRoom: chatRoom not found for roomId: {}, user: {}", roomId, user);
+            return Response.status(Response.Status.NOT_FOUND).build();
+        }
+        Response response;
+        if (wasAdded) {
+            log.trace("response for addUser: {}", wasAdded);
+            response = Response.ok(wasAdded).build();
+        } else {
+            log.error("error while adding user to chat room");
+            response = Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity("error while adding user to chatRoom").build();
+        }
+        return response;
+    }
+
+
+    @POST
+    @Consumes(MediaType.APPLICATION_JSON)
+    @Produces(MediaType.APPLICATION_JSON)
+    @Path("/removeUser/{roomId}")
+    public Response removeUserFromChatRoom(User user, @PathParam("roomId") String roomId) {
+        if (isNull(user)) {
+            log.trace("removeUser user object was null");
+            return Response.status(Response.Status.BAD_REQUEST).entity("must provide user").build();
+        }
+        boolean wasRemoved = communicationService.removeUserFromChatRoom(user, roomId);
+        if (isNull(wasRemoved)) {
+            log.error("removeUserToChatRoom: chatRoom not found for roomId: {}, user: {}", roomId, user);
+            return Response.status(Response.Status.NOT_FOUND).build();
+        }
+        Response response;
+        if (wasRemoved) {
+            log.trace("response for removeUser: {}", wasRemoved);
+            response = Response.ok(wasRemoved).build();
+        } else {
+            log.error("error while adding user to chat room");
+            response = Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity("error while adding user to chatRoom").build();
+        }
+        return response;
+    }
+
+    @POST
+    @Produces(MediaType.APPLICATION_JSON)
+    @Path("/setTopic/{roomId}")
+    public Response setChatRoomTopic(@PathParam("roomId") String roomId, @QueryParam("topic") String topic) {
+        if (isNull(topic)) {
+            log.trace("setTopic param not given");
+            return Response.status(Response.Status.BAD_REQUEST).entity("topic must be not empty").build();
+        }
+        boolean wasSet = communicationService.setChatRoomTopic(roomId, topic);
+        if (isNull(wasSet)) {
+            log.error("addChatRoomTopic: chatRoom not found for roomId: {}, topic: {}", roomId, topic);
+            return Response.status(Response.Status.NOT_FOUND).build();
+        }
+        Response response;
+        if (wasSet) {
+            log.trace("response for setTopic: {}", wasSet);
+            response = Response.ok(wasSet).build();
+        } else {
+            log.error("error while setting topic to chat room");
+            response = Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity("error while setting topic to chat room").build();
+        }
+        return response;
+    }
+
+    @POST
+    @Consumes(MediaType.APPLICATION_JSON)
+    @Produces(MediaType.APPLICATION_JSON)
+    @Path("/create")
+    public Response createChatRoom(@QueryParam("name") String name, List<User> users) {
+        if (isNull(name)) {
+            return Response.status(Response.Status.BAD_REQUEST).entity("must provide name as queryParam").build();
+        }
+        String chatId = communicationService.createChatRoom(name, users);
+        if (isNull(chatId)) {
+            log.error("error while creating chatRoom for: name: {}, users: {}", name, users);
+            return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build();
+        }
+        log.trace("response for createChatRoom: {}", chatId);
+        return Response.status(Response.Status.CREATED).entity(chatId).build();
+    }
+
+    // Temp: just get user as json
+    // TODO: remove after done implementing
+    @GET
+    @Path("/user")
+    @Produces(MediaType.APPLICATION_JSON)
+    public Response getUser() {
+        User user = ((CommunicationDummyService) communicationService).getUser();
+        return Response.ok(user).build();
+    }
+
+
+}
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/groupCreation/service/GroupCreationService.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/groupCreation/service/GroupCreationService.java
new file mode 100644
index 0000000000000000000000000000000000000000..23127b12dc29e93f9d76e299c81619229fab16e4
--- /dev/null
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/groupCreation/service/GroupCreationService.java
@@ -0,0 +1,97 @@
+package unipotsdam.gf.modules.groupCreation.service;
+
+import unipotsdam.gf.core.management.Management;
+import unipotsdam.gf.core.management.group.Group;
+import unipotsdam.gf.core.management.project.Project;
+import unipotsdam.gf.core.management.user.User;
+import unipotsdam.gf.core.management.user.UserProfile;
+import unipotsdam.gf.interfaces.ICommunication;
+
+import javax.annotation.ManagedBean;
+import javax.annotation.Resource;
+import javax.inject.Inject;
+import javax.inject.Singleton;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.stream.Collectors;
+
+@ManagedBean
+@Resource
+@Singleton
+public class GroupCreationService {
+
+    @Inject
+    private ICommunication communicationService;
+
+    @Inject
+    private Management management;
+
+    public boolean createExampleProject() {
+
+        User docentUser = getDocentUser();
+        Project project = new Project("1", "", true, docentUser.getEmail(), "admin");
+
+        List<Group> groups = createDummyGroups(project.getId());
+
+        if (!management.exists(project)) {
+            management.create(project);
+        }
+
+        groups.forEach(group -> management.createGroup(group, project.getId()));
+
+        // TODO: read List<Group> of database to get Id for chatRoomName (Should be ProjectName - GroupId)
+        // TODO: add projectName as DatabaseEntry
+        // TODO: implement sql service injection for, so connection is only done once in app
+
+
+        List<Group> nonEmptyGroups = groups.stream().filter(group -> group.getMembers().isEmpty())
+                .collect(Collectors.toList());
+        if (nonEmptyGroups.isEmpty()) {
+            return false;
+        }
+
+
+        return true;
+    }
+
+    private List<Group> createDummyGroups(String projectId) {
+        Group group1 = new Group(new ArrayList<>(), projectId);
+        Group group2 = new Group(new ArrayList<>(), projectId);
+        Group group3 = new Group(new ArrayList<>(), projectId);
+        Group group4 = new Group(new ArrayList<>(), projectId);
+        List<Group> groups = Arrays.asList(group1, group2, group3, group4);
+
+        String baseUserName = "Name ";
+        String password = "test123";
+        String baseEMailFront = "test";
+        String baseEMailDomain = "@example.com";
+        boolean isStudentValue = true;
+        for (int userNumber = 0; userNumber < groups.size() * 5; userNumber++) {
+            String userName = baseUserName + (userNumber + 1);
+            String email = baseEMailFront + (userNumber + 1) + baseEMailDomain;
+            User user = new User(userName, password, email, isStudentValue);
+            if (!management.exists(user)) {
+                saveUserToDatabase(user);
+                int groupPosition = userNumber % groups.size();
+                groups.get(groupPosition).addMember(user);
+            }
+        }
+        return groups;
+    }
+
+    private User getDocentUser() {
+        User docent = new User("Julian", "docent", "docent@docent.com", false);
+        if (!management.exists(docent)) {
+            saveUserToDatabase(docent);
+        } else {
+            docent = management.getUserByEmail(docent.getEmail());
+        }
+        return docent;
+    }
+
+    private void saveUserToDatabase(User user) {
+        communicationService.registerAndLoginUser(user);
+        management.create(user, new UserProfile());
+    }
+}
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/munchkin/service/RestyMunschkin.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/munchkin/service/RestyMunschkin.java
index b4ab145efa2e345797c8c918846a5f483b427f17..256554946e5218afacaedc914e21fe9c1f70ca01 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/munchkin/service/RestyMunschkin.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/munchkin/service/RestyMunschkin.java
@@ -38,5 +38,23 @@ public class RestyMunschkin {
         return munschkin;
     }
 
+    @GET
+    @Produces(MediaType.TEXT_HTML)
+    @Path("/project/{projectId}/quiz/{quizId}")
+    public String exampleQuiz(@PathParam("projectId") String name, @PathParam("quizId") String quiz) {
+        /**String[] correctAnswers = new String[2];
+         correctAnswers[0] = "42";
+         correctAnswers[1] = "24";
+         String[] wrongAnswers = {"a god created creature", "a sum of my mistakes"};
+         if (false){
+         return "ProjectId not found: " + name;
+         }
+         Quiz sampleQuiz = new Quiz("multiple","Who am I and if so, how many?", correctAnswers,wrongAnswers);
+         log.info("HelloWorldview helloWorld Method answered: "+ sampleQuiz.toString());
+         return sampleQuiz.toString();*/
+        return "<html> " + "<title>" + "Hello Munschkin" + "</title>" + "<body><h1>" + "</body></h1>" + "</html> ";
+
+    }
+
 
 }
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/peer2peerfeedback/ExampleFeedback.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/peer2peerfeedback/ExampleFeedback.java
new file mode 100644
index 0000000000000000000000000000000000000000..bc040fad7ccfad8993d3a1f33ca2eebfbefb48a3
--- /dev/null
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/peer2peerfeedback/ExampleFeedback.java
@@ -0,0 +1,31 @@
+package unipotsdam.gf.modules.peer2peerfeedback;
+
+import unipotsdam.gf.core.management.user.User;
+import unipotsdam.gf.core.management.utils.Category;
+
+import java.io.File;
+
+/**
+ Peer2PeerFeedback example
+ created by Katharina
+ */
+
+public class ExampleFeedback {
+
+    String feedbacktopic = "Vorschlag zur Methodik";
+    String feedbacktype = "Text";
+    Category feedbackcategory = Category.METHODIK;
+    User feedbackrec = new User();
+    User feedbacksend = new User();
+    File file = new File("src/main/resources/example.txt"); //gibt erstmal nur einen Pfad an
+    //String path = file.getAbsolutePath();
+
+
+    public Peer2PeerFeedback examplePeerFeedback (){
+
+        Peer2PeerFeedback example = new Peer2PeerFeedback(feedbacktopic, feedbacktype,
+                feedbackcategory, file, feedbacksend, feedbackrec);
+
+        return example;
+    }
+}
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/peer2peerfeedback/Peer2PeerFeedback.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/peer2peerfeedback/Peer2PeerFeedback.java
index 4633872e460122c4f879d78f749bae820ed36587..d68e106fb4c8d007e1d5b1a5a8c5e7eef4289487 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/peer2peerfeedback/Peer2PeerFeedback.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/peer2peerfeedback/Peer2PeerFeedback.java
@@ -1,30 +1,30 @@
 package unipotsdam.gf.modules.peer2peerfeedback;
 
 import unipotsdam.gf.core.management.user.User;
+import unipotsdam.gf.core.management.utils.Category;
 
 import java.io.File;
 
 /**
  Peer2PeerFeedback Object
+ created by Katharina
  */
 
 public class Peer2PeerFeedback{
 
 
-    String feedbacktopic;
-    String feedbacktype;
-    String feedbackreference;
-    File document;
-    String feedbacktemplate;
-    User feedbacksender;
-    User feedbackreceiver;
+    private String feedbacktopic;
+    private String feedbacktype;
+    private Category feedbackcategory;
+    private File document;
+    private User feedbacksender;
+    private User feedbackreceiver;
 
-    public Peer2PeerFeedback(String feedbacktopic, String feedbacktype, String feedbackreference, File document, String feedbacktemplate, User feedbacksender, User feedbackreceiver) {
+    public Peer2PeerFeedback(String feedbacktopic, String feedbacktype, Category feedbackcategory, File document, User feedbacksender, User feedbackreceiver) {
         this.feedbacktopic = feedbacktopic;
         this.feedbacktype = feedbacktype;
-        this.feedbackreference = feedbackreference;
+        this.feedbackcategory = feedbackcategory;
         this.document = document;
-        this.feedbacktemplate = feedbacktemplate;
         this.feedbacksender = feedbacksender;
         this.feedbackreceiver = feedbackreceiver;
     }
@@ -51,14 +51,13 @@ public class Peer2PeerFeedback{
     }
 
 
-    public String getFeedbackreference() {
 
-        return feedbackreference;
+    public Category getFeedbackcategory() {
+        return feedbackcategory;
     }
 
-    public void setFeedbackreference(String feedbackreference) {
-
-        this.feedbackreference = feedbackreference;
+    public void setFeedbackcategory(Category feedbackcategory) {
+        this.feedbackcategory = feedbackcategory;
     }
 
 
@@ -72,16 +71,6 @@ public class Peer2PeerFeedback{
         this.document = document;
     }
 
-    public String getFeedbacktemplate() {
-
-        return feedbacktemplate;
-    }
-
-    public void setFeedbacktemplate(String feedbacktemplate) {
-
-        this.feedbacktemplate = feedbacktemplate;
-    }
-
 
     public User getFeedbacksender() {
         return feedbacksender;
@@ -105,8 +94,7 @@ public class Peer2PeerFeedback{
         return "Peer2PeerFeedback{" +
                 "feedbacktopic=" + feedbacktopic +
                 ", feedbacktype=" + feedbacktype +
-                ", feedbackreference=" + feedbackreference +
-                ", feedbacktemplate=" + feedbacktemplate +
+                ", feedbackreference=" + feedbackcategory +
                 ", feedbacksender='" + feedbacksender +
                 ", feedbackreceiver=" + feedbackreceiver +
                 ", document=" + document.toString() +
diff --git a/gemeinsamforschen/src/main/webapp/WEB-INF/web.xml b/gemeinsamforschen/src/main/webapp/WEB-INF/web.xml
index be128ff4fe1eb5321a87cbfe63fb7baa02fe40a8..929b4ad51850624802f6c16eed5d88b77f59b274 100644
--- a/gemeinsamforschen/src/main/webapp/WEB-INF/web.xml
+++ b/gemeinsamforschen/src/main/webapp/WEB-INF/web.xml
@@ -26,6 +26,10 @@
             <param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
             <param-value>true</param-value>
         </init-param>
+        <init-param>
+            <param-name>javax.ws.rs.Application</param-name>
+            <param-value>unipotsdam.gf.config.GFResourceConfig</param-value>
+        </init-param>
         <!--       <init-param>
                    <param-name>com.sun.jersey.config.feature.DisableWADL</param-name>
                    <param-value>true</param-value>
@@ -88,7 +92,7 @@
 
 
     <welcome-file-list>
-        <welcome-file>index.html</welcome-file>
+        <welcome-file>index.jsp</welcome-file>
     </welcome-file-list>
 </web-app>
 
diff --git a/gemeinsamforschen/src/main/webapp/assets/css/Community-ChatComments.css b/gemeinsamforschen/src/main/webapp/assets/css/Community-ChatComments.css
new file mode 100644
index 0000000000000000000000000000000000000000..fd35cb7c8666702b9c4410f85ef329fa8a8b3b0a
--- /dev/null
+++ b/gemeinsamforschen/src/main/webapp/assets/css/Community-ChatComments.css
@@ -0,0 +1,13 @@
+img {
+  border-radius:5px;
+}
+
+img {
+  border-radius:5px;
+}
+
+.btn {
+  margin:0px 10px;
+  margin-bottom:20px;
+}
+
diff --git a/gemeinsamforschen/src/main/webapp/assets/css/Sidebar-Menu-1.css b/gemeinsamforschen/src/main/webapp/assets/css/Sidebar-Menu-1.css
new file mode 100644
index 0000000000000000000000000000000000000000..66e203c407f8777f74f6fdbcca0b9ba43812e3b1
--- /dev/null
+++ b/gemeinsamforschen/src/main/webapp/assets/css/Sidebar-Menu-1.css
@@ -0,0 +1,129 @@
+body {
+  overflow-x:hidden;
+}
+
+#wrapper {
+  padding-left:0;
+  -webkit-transition:all 0.5s ease;
+  -moz-transition:all 0.5s ease;
+  -o-transition:all 0.5s ease;
+  transition:all 0.5s ease;
+}
+
+#wrapper.toggled {
+  padding-left:250px;
+}
+
+#sidebar-wrapper {
+  z-index:1000;
+  position:fixed;
+  left:250px;
+  width:0;
+  height:100%;
+  margin-left:-250px;
+  overflow-y:auto;
+  background:#000;
+  -webkit-transition:all 0.5s ease;
+  -moz-transition:all 0.5s ease;
+  -o-transition:all 0.5s ease;
+  transition:all 0.5s ease;
+}
+
+#wrapper.toggled #sidebar-wrapper {
+  width:250px;
+}
+
+#page-content-wrapper {
+  width:100%;
+  position:absolute;
+  padding:15px;
+}
+
+#wrapper.toggled #page-content-wrapper {
+  position:absolute;
+  margin-right:-250px;
+}
+
+.sidebar-nav {
+  position:absolute;
+  top:0;
+  width:250px;
+  margin:0;
+  padding:0;
+  list-style:none;
+}
+
+.sidebar-nav li {
+  text-indent:20px;
+  line-height:40px;
+}
+
+.sidebar-nav li a {
+  display:block;
+  text-decoration:none;
+  color:#999999;
+}
+
+.sidebar-nav li a:hover {
+  text-decoration:none;
+  color:#fff;
+  background:rgba(255,255,255,0.2);
+}
+
+.sidebar-nav li a:active, .sidebar-nav li a:focus {
+  text-decoration:none;
+}
+
+.sidebar-nav > .sidebar-brand {
+  height:65px;
+  font-size:18px;
+  line-height:60px;
+}
+
+.sidebar-nav > .sidebar-brand a {
+  color:#999999;
+}
+
+.sidebar-nav > .sidebar-brand a:hover {
+  color:#fff;
+  background:none;
+}
+
+@media (min-width:768px) {
+  #wrapper {
+    padding-left:250px;
+  }
+}
+
+@media (min-width:768px) {
+  #wrapper.toggled {
+    padding-left:0;
+  }
+}
+
+@media (min-width:768px) {
+  #sidebar-wrapper {
+    width:250px;
+  }
+}
+
+@media (min-width:768px) {
+  #wrapper.toggled #sidebar-wrapper {
+    width:0;
+  }
+}
+
+@media (min-width:768px) {
+  #page-content-wrapper {
+    padding:20px;
+    position:relative;
+  }
+}
+
+@media (min-width:768px) {
+  #wrapper.toggled #page-content-wrapper {
+    position:relative;
+    margin-right:0;
+  }
+}
+
diff --git a/gemeinsamforschen/src/main/webapp/assets/css/styles.css b/gemeinsamforschen/src/main/webapp/assets/css/styles.css
index 51a30b0dd9cb1987e7d8c71cd72bbba19a31f3a5..b4a3cba5eaa0697dd95ceb3a0436550950ed4f1c 100644
--- a/gemeinsamforschen/src/main/webapp/assets/css/styles.css
+++ b/gemeinsamforschen/src/main/webapp/assets/css/styles.css
@@ -95,7 +95,37 @@
             opacity: 0;
         }
 }
+#chat {
+    width:35%;
+    margin-right: 20px;
+}
+
+table .tableTd{
+    font-size: 27px;
+}
+
+.questionTd{
+    margin: auto;
+}
+
+table .table-striped{
+    margin-left:2%;
+    font-size:24px;
+    align-content: center;
+    width: 96%;
+}
+
+table ul{
+    justify-items: center;
+}
 
+table img{
+    width:200px;
+}
+
+.btn .btn-light{
+    margin-top:6px;
+}
 
 .checkbox {
     padding-left: 20px; }
diff --git a/gemeinsamforschen/src/main/webapp/assets/js/Sidebar-Menu.js b/gemeinsamforschen/src/main/webapp/assets/js/Sidebar-Menu.js
new file mode 100644
index 0000000000000000000000000000000000000000..75d87e9ab3437b44784b97cf2e600b636f8b4257
--- /dev/null
+++ b/gemeinsamforschen/src/main/webapp/assets/js/Sidebar-Menu.js
@@ -0,0 +1,4 @@
+$("#menu-toggle").click(function(e) {
+    e.preventDefault();
+    $("#wrapper").toggleClass("toggled");
+});
\ No newline at end of file
diff --git a/gemeinsamforschen/src/main/webapp/assets/js/assessmentCalculator.js b/gemeinsamforschen/src/main/webapp/assets/js/assessmentCalculator.js
new file mode 100644
index 0000000000000000000000000000000000000000..743de6b60c639819d73547e300b8d46bd6b3b564
--- /dev/null
+++ b/gemeinsamforschen/src/main/webapp/assets/js/assessmentCalculator.js
@@ -0,0 +1,83 @@
+$(document).ready(function () {     //todo: paths should be relative
+    $("#giveItBack").on("click", function () {
+        $.ajax({
+            url: "../rest/assessments/total/project/" + "gemeinsamForschen" + "/student/" + "Bela",
+            type: 'GET',
+            success: function (data) {
+                alert("here is the TotalPerformance: " + data);
+
+                location.href="../pages/project-student.jsp?token="+getUserTokenFromUrl();
+            },
+            error: function (a, b, c) {
+                alert('some error' + a);
+            }
+        })
+    });
+    $("#calculateNow").on("click", function () {
+        var dataP = [
+            {
+                "studentIdentifier": {
+                    "projectId": "projekt",
+                    "studentId": "Keiler"
+                },
+                "quizAnswer": [
+                    1,
+                    0,
+                    1,
+                    1,
+                    1,
+                    0
+                ],
+                "feedback": "toller dude",
+                "workRating": [
+                    5,
+                    4,
+                    3,
+                    2,
+                    1,
+                    0
+                ]
+            },
+            {
+                "studentIdentifier": {
+                    "projectId": "projekt",
+                    "studentId": "Glucke"
+                },
+                "quizAnswer": [
+                    1,
+                    1,
+                    1,
+                    1,
+                    1,
+                    0
+                ],
+                "feedback": "super",
+                "workRating": [
+                    1,
+                    1,
+                    1,
+                    2,
+                    3,
+                    2
+                ]
+            }
+        ];
+
+        $.ajax({
+            url: "../rest/assessments/calculate",
+            type: 'POST',
+            headers: {
+                "Content-Type": "application/json",
+                "Cache-Control": "no-cache"
+            },
+            data: JSON.stringify(dataP),
+            success: function (response) {
+                alert(response[0].studentIdentifier.studentId + " got " +response[0].grade*100+"% /n"+
+                    response[1].studentIdentifier.studentId + " got " +response[1].grade*100+"% /n");
+            },
+            error: function (a) {
+                alert('some error' + a);
+            }
+        })
+    })
+});
\ No newline at end of file
diff --git a/gemeinsamforschen/src/main/webapp/assets/js/finalAssessment.js b/gemeinsamforschen/src/main/webapp/assets/js/finalAssessment.js
new file mode 100644
index 0000000000000000000000000000000000000000..a42d6489e0ef6234a63275d85c978a6d2155c399
--- /dev/null
+++ b/gemeinsamforschen/src/main/webapp/assets/js/finalAssessment.js
@@ -0,0 +1,37 @@
+$(document).ready(function() {
+    $(".carousel").carousel({
+        interval: false
+    });
+    $('#assessThePeer').on("click", function () {
+        assessPeer();
+    });
+});
+function assessPeer(){
+    var peerRating = {
+        "fromPeer": getUser(),
+        "toPeer": "",
+        "workRating": []
+    };
+    var dataP = [];
+    var peerStudents =$('.peerStudent');
+    for (var i=0; i< peerStudents.length; i++){
+        peerRating.toPeer = peerStudents[i].id;
+        peerRating.workRating = [5,4,3,2]
+    }
+    dataP.push(peerRating);
+    $.ajax({
+        url:'../rest/assessments/peer/project/1/group/1',
+        type: 'POST',
+        headers: {
+            "Content-Type": "application/json",
+            "Cache-Control": "no-cache"
+        },
+        data: JSON.stringify(dataP),
+        success: function(){
+
+        },
+        error: function(a,b,c){
+
+        }
+    });
+}
diff --git a/gemeinsamforschen/src/main/webapp/assets/js/overview-docent.js b/gemeinsamforschen/src/main/webapp/assets/js/overview-docent.js
new file mode 100644
index 0000000000000000000000000000000000000000..a0daa5f08339ef2927fc55c39598bbca1e55648a
--- /dev/null
+++ b/gemeinsamforschen/src/main/webapp/assets/js/overview-docent.js
@@ -0,0 +1,5 @@
+$(document).ready(function(){
+    $('#project1Link').on('click', function(){
+        location.href="project-docent.jsp?token="+getUserTokenFromUrl();
+    });
+});
\ No newline at end of file
diff --git a/gemeinsamforschen/src/main/webapp/assets/js/overview-student.js b/gemeinsamforschen/src/main/webapp/assets/js/overview-student.js
new file mode 100644
index 0000000000000000000000000000000000000000..58a1b769651bb338348cdd908d25faa7b9c4037e
--- /dev/null
+++ b/gemeinsamforschen/src/main/webapp/assets/js/overview-student.js
@@ -0,0 +1,5 @@
+$(document).ready(function(){
+    $('#project1Link').on('click', function(){
+        location.href="project-student.jsp?token="+getUserTokenFromUrl();
+    });
+});
\ No newline at end of file
diff --git a/gemeinsamforschen/src/main/webapp/assets/js/takeQuiz.js b/gemeinsamforschen/src/main/webapp/assets/js/takeQuiz.js
new file mode 100644
index 0000000000000000000000000000000000000000..68179aa9e1fa56b698992bc3212e2bd41b2d4a94
--- /dev/null
+++ b/gemeinsamforschen/src/main/webapp/assets/js/takeQuiz.js
@@ -0,0 +1,73 @@
+$(document).ready(function () {
+    var loading = $('#loadbar').hide();
+    $(document)
+        .ajaxStart(function () {
+            loading.show();
+        }).ajaxStop(function () {
+        loading.hide();
+    });
+
+    $("label.btn").on('click',function () {
+        var choice = $(this).find('input:radio').val();
+        $('#loadbar').show();
+        $('#quiz').fadeOut();
+        setTimeout(function(){
+            $( "#answer" ).html(  $(this).checking(choice) );
+            $('#quiz').show();
+            $('#loadbar').fadeOut();
+            /* something else */
+        }, 1500);
+    });
+
+    $ans = 3;
+
+    $.fn.checking = function(ck) {
+        if (ck != $ans)
+            return 'INCORRECT';
+        else
+            return 'CORRECT';
+    };
+
+    $.ajax({
+        url: '../rest/assessments/project/1/quiz/',
+        type: 'GET',
+        success: function (data) {
+            var table = document.getElementById('tableQuiz');
+            for (var quiz = 0; quiz < data.length; quiz++){
+                var answers = data[quiz].correctAnswers.concat(data[quiz].incorrectAnswers);
+                var colspan = answers.length;
+                var trQuestion = document.createElement('TR');
+                var question = '<td colspan="' + colspan + '">' + data[quiz].question + '</td>';
+                trQuestion.innerHTML = question;
+                var trAnswers = document.createElement('TR');
+                answers = shuffle(answers);
+                var answersTd='<div class="quiz" id="quiz" data-toggle="buttons"><td style="display: block;">';
+                for (var i = 0; i < answers.length; i++) {
+                    answersTd = answersTd + '<div><label class="element-animation1 btn btn-lg btn-primary btn-block"><span class="btn-label"><i class="glyphicon glyphicon-chevron-right"></i></span><input type="checkbox">' + answers[i] + '</label></div>';
+                }
+                question ="";
+                answers=[];
+                trAnswers.innerHTML = answersTd+'</div></td>';
+                table.appendChild(trQuestion);
+                table.appendChild(trAnswers);
+            }
+        },
+        error: function (a, b, c) {
+            alert('Fehler ' + a);
+        }
+    });
+    $("#submitQuiz").on("click", function () {
+
+    });
+});
+
+function shuffle(a) {
+    var j, x, i;
+    for (i = a.length - 1; i > 0; i--) {
+        j = Math.floor(Math.random() * (i + 1));
+        x = a[i];
+        a[i] = a[j];
+        a[j] = x;
+    }
+    return a;
+}
\ No newline at end of file
diff --git a/gemeinsamforschen/src/main/webapp/communication/chatWindow.tld b/gemeinsamforschen/src/main/webapp/communication/chatWindow.tld
new file mode 100644
index 0000000000000000000000000000000000000000..e98a7ae49e0b8eba380ac79f2efd35b0840c63cc
--- /dev/null
+++ b/gemeinsamforschen/src/main/webapp/communication/chatWindow.tld
@@ -0,0 +1,16 @@
+<taglib>
+    <tlib-version>1.0</tlib-version>
+    <jsp-version>2.0</jsp-version>
+    <short-name>chatWindow</short-name>
+
+    <tag>
+        <name>chatWindow</name>
+        <tag-class>unipotsdam.gf.modules.communication.ChatWindow</tag-class>
+        <body-content>empty</body-content>
+        <attribute>
+            <name>orientation</name>
+            <required>yes</required>
+            <rtexprvalue>no</rtexprvalue>
+        </attribute>
+    </tag>
+</taglib>
\ No newline at end of file
diff --git a/gemeinsamforschen/src/main/webapp/core/pages/hiddenUserField.tld b/gemeinsamforschen/src/main/webapp/core/pages/gemeinsamForschen.tld
similarity index 65%
rename from gemeinsamforschen/src/main/webapp/core/pages/hiddenUserField.tld
rename to gemeinsamforschen/src/main/webapp/core/pages/gemeinsamForschen.tld
index bb1ceeb141850ffc882c0521893f52d6d94f181b..3704c718e3338de67f5165d78f3d5785f983b11a 100644
--- a/gemeinsamforschen/src/main/webapp/core/pages/hiddenUserField.tld
+++ b/gemeinsamforschen/src/main/webapp/core/pages/gemeinsamForschen.tld
@@ -8,4 +8,11 @@
         <tag-class>unipotsdam.gf.core.management.user.HiddenUserTag</tag-class>
         <body-content>empty</body-content>
     </tag>
+
+    <tag>
+        <name>menu</name>
+        <tag-class>unipotsdam.gf.core.management.user.Menu</tag-class>
+        <body-content>empty</body-content>
+    </tag>
+
 </taglib>
\ No newline at end of file
diff --git a/gemeinsamforschen/src/main/webapp/pages/assessmentCalculator.jsp b/gemeinsamforschen/src/main/webapp/pages/assessmentCalculator.jsp
new file mode 100644
index 0000000000000000000000000000000000000000..ded714cfe627d8250322e7a0e1e1bc4b915cc5a1
--- /dev/null
+++ b/gemeinsamforschen/src/main/webapp/pages/assessmentCalculator.jsp
@@ -0,0 +1,17 @@
+<%@ taglib uri="../core/pages/gemeinsamForschen.tld" prefix="menu"%>
+
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="utf-8">
+    <title>assessment calculator</title>
+    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
+    <script src="../assets/js/assessmentCalculator.js"></script>
+    <script src="../assets/js/utility.js"></script>
+</head>
+<body>
+<button id="calculateNow">Post Performance</button>
+<button id="giveItBack">Get TotalPerformance</button>
+<menu:menu></menu:menu>
+</body>
+</html>
\ No newline at end of file
diff --git a/gemeinsamforschen/src/main/webapp/pages/createQuiz.jsp b/gemeinsamforschen/src/main/webapp/pages/createQuiz.jsp
new file mode 100644
index 0000000000000000000000000000000000000000..b9741e2ee9962d42c06531d2052593db0a4a4f4a
--- /dev/null
+++ b/gemeinsamforschen/src/main/webapp/pages/createQuiz.jsp
@@ -0,0 +1,16 @@
+<%--
+  Created by IntelliJ IDEA.
+  User: fides-WHK
+  Date: 21.06.2018
+  Time: 12:37
+  To change this template use File | Settings | File Templates.
+--%>
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+<html>
+<head>
+    <title>gemeinsam Forschen</title>
+</head>
+<body>
+<h1>hier werden quizzes vom Dozenten oder Studenten erstellt</h1>
+</body>
+</html>
diff --git a/gemeinsamforschen/src/main/webapp/pages/finalAssessments.jsp b/gemeinsamforschen/src/main/webapp/pages/finalAssessments.jsp
new file mode 100644
index 0000000000000000000000000000000000000000..52b127d16b895665f442b4c3d13b0e26017f7b07
--- /dev/null
+++ b/gemeinsamforschen/src/main/webapp/pages/finalAssessments.jsp
@@ -0,0 +1,365 @@
+<%@ taglib uri="../core/pages/gemeinsamForschen.tld" prefix="menu"%>
+
+<!DOCTYPE html>
+<html>
+
+<head>
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <title>muster-gemeinsam-forschen</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>
+    <script src="../assets/js/finalAssessment.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">
+</head>
+
+<body>
+<div id="wrapper">
+    <menu:menu></menu:menu>
+    <div class="page-content-wrapper">
+        <div class="container-fluid">
+            <h1 id="projectId">project1
+                <a href="#">
+                <span class="glyphicon glyphicon-envelope"
+                      style="font-size:27px;margin-top:-17px;margin-left:600px;"></span>
+                </a>
+                <a href="#">
+                    <span class="glyphicon glyphicon-cog"
+                          style="font-size:29px;margin-left:5px;margin-top:-25px;"></span>
+                </a></h1>
+        </div>
+        <div>
+            <table>
+                <tr>
+                    <td id="yourContent">
+                        <h1>Assessment for project1 </h1>
+                        <!-- here will be all the content -->
+                        <div class="container">
+                                <h2>Carousel Example</h2>
+                                <div id="myCarousel" class="carousel slide" data-ride="carousel">
+                                    <!-- Indicators -->
+                                    <ol class="carousel-indicators">
+                                        <li data-target="#myCarousel" data-slide-to="0" class="active"></li>
+                                        <li data-target="#myCarousel" data-slide-to="1"></li>
+                                        <li data-target="#myCarousel" data-slide-to="2"></li>
+                                    </ol>
+
+                                    <!-- Wrapper for slides -->
+                                    <div class="carousel-inner">
+                                        <div class="item active">
+                                            <table class="table-striped peerStudent"
+                                                   style="width:70%;border:1px solid; margin:auto;" id="student1">
+                                                <tr>
+                                                    <td align="center">
+                                                        <img src="../assets/img/1.jpg" alt="student1"
+                                                             style="width:20%;">
+                                                    </td>
+                                                </tr>
+                                                <tr>
+                                                    <td align="center">
+                                                        <h3>Führungsqualität</h3>
+                                                    </td>
+                                                </tr>
+                                                <tr>
+                                                    <td align="center">
+                                                        <label>gut<input type="radio" value="5"
+                                                                         name="leadership1"></label>
+                                                        <input type="radio" value="4" name="leadership1">
+                                                        <input type="radio" value="3" name="leadership1">
+                                                        <input type="radio" value="2" name="leadership1">
+                                                        <label><input type="radio" value="1" name="leadership1">
+                                                            ungenügend</label>
+                                                    </td>
+                                                </tr>
+                                                <tr>
+                                                    <td align="center">
+                                                        <h3>Kooperationsbereitschaft</h3>
+                                                    </td>
+                                                </tr>
+                                                <tr>
+                                                    <td align="center">
+                                                        <label><input type="radio" value="5" name="cooparation1">
+                                                            gut</label>
+                                                        <input type="radio" value="4" name="cooparation1">
+                                                        <input type="radio" value="3" name="cooparation1">
+                                                        <input type="radio" value="2" name="cooparation1">
+                                                        <label><input type="radio" value="1" name="cooparation1">
+                                                            ungenügend</label>
+                                                    </td>
+                                                </tr>
+                                                <tr>
+                                                    <td align="center">
+                                                        <h3>Pünktlichkeit</h3>
+                                                    </td>
+                                                </tr>
+                                                <tr>
+                                                    <td align="center">
+                                                        <label><input type="radio" value="5" name="punctual1">
+                                                            gut</label>
+                                                        <input type="radio" value="4" name="punctual1">
+                                                        <input type="radio" value="3" name="punctual1">
+                                                        <input type="radio" value="2" name="punctual1">
+                                                        <label><input type="radio" value="1" name="punctual1">
+                                                            ungenügend</label>
+                                                    </td>
+                                                </tr>
+                                                <tr>
+                                                    <td align="center">
+                                                        <h3>Selbstständigkeit</h3>
+                                                    </td>
+                                                </tr>
+                                                <tr>
+                                                    <td align="center">
+                                                        <label><input type="radio" value="5" name="autonomous1">
+                                                            gut</label>
+                                                        <input type="radio" value="4" name="autonomous1">
+                                                        <input type="radio" value="3" name="autonomous1">
+                                                        <input type="radio" value="2" name="autonomous1">
+                                                        <label><input type="radio" value="1" name="autonomous1">
+                                                            ungenügend</label>
+                                                    </td>
+                                                </tr>
+                                            </table>
+                                        </div>
+
+                                        <div class="item">
+                                            <table class="table-striped peerStudent"
+                                                   style="width:70%;border:1px solid; margin:auto;"  id="student2">
+                                                <tr>
+                                                    <td align="center">
+                                                        <img src="../assets/img/2.jpg" alt="student2"
+                                                             style="width:20%;">
+                                                    </td>
+                                                </tr>
+                                                <tr>
+                                                    <td align="center">
+                                                        <h3>Führungsqualität</h3>
+                                                    </td>
+                                                </tr>
+                                                <tr>
+                                                    <td align="center">
+                                                        <label>gut<input type="radio" value="5"
+                                                                         name="leadership2"></label>
+                                                        <input type="radio" value="4" name="leadership2">
+                                                        <input type="radio" value="3" name="leadership2">
+                                                        <input type="radio" value="2" name="leadership2">
+                                                        <label><input type="radio" value="1" name="leadership2">
+                                                            ungenügend</label>
+                                                    </td>
+                                                </tr>
+                                                <tr>
+                                                    <td align="center">
+                                                        <h3>Kooperationsbereitschaft</h3>
+                                                    </td>
+                                                </tr>
+                                                <tr>
+                                                    <td align="center">
+                                                        <label><input type="radio" value="5" name="cooparation2">
+                                                            gut</label>
+                                                        <input type="radio" value="4" name="cooparation2">
+                                                        <input type="radio" value="3" name="cooparation2">
+                                                        <input type="radio" value="2" name="cooparation2">
+                                                        <label><input type="radio" value="1" name="cooparation2">
+                                                            ungenügend</label>
+                                                    </td>
+                                                </tr>
+                                                <tr>
+                                                    <td align="center">
+                                                        <h3>Pünktlichkeit</h3>
+                                                    </td>
+                                                </tr>
+                                                <tr>
+                                                    <td align="center">
+                                                        <label><input type="radio" value="5" name="punctual2">
+                                                            gut</label>
+                                                        <input type="radio" value="4" name="punctual2">
+                                                        <input type="radio" value="3" name="punctual2">
+                                                        <input type="radio" value="2" name="punctual2">
+                                                        <label><input type="radio" value="1" name="punctual2">
+                                                            ungenügend</label>
+                                                    </td>
+                                                </tr>
+                                                <tr>
+                                                    <td align="center">
+                                                        <h3>Selbstständigkeit</h3>
+                                                    </td>
+                                                </tr>
+                                                <tr>
+                                                    <td align="center">
+                                                        <label><input type="radio" value="5" name="autonomous2">
+                                                            gut</label>
+                                                        <input type="radio" value="4" name="autonomous2">
+                                                        <input type="radio" value="3" name="autonomous2">
+                                                        <input type="radio" value="2" name="autonomous2">
+                                                        <label><input type="radio" value="1" name="autonomous2">
+                                                            ungenügend</label>
+                                                    </td>
+                                                </tr>
+                                            </table>
+                                        </div>
+
+                                        <div class="item">
+                                            <table class="table-striped peerStudent"
+                                                   style="width:70%;border:1px solid; margin:auto;" id="student3">
+                                                <tr>
+                                                    <td align="center">
+                                                        <img src="../assets/img/3.jpg" alt="student3"
+                                                             style="width:20%;">
+                                                    </td>
+                                                </tr>
+                                                <tr>
+                                                    <td align="center">
+                                                        <h3>Führungsqualität</h3>
+                                                    </td>
+                                                </tr>
+                                                <tr>
+                                                    <td align="center">
+                                                        <label>gut<input type="radio" value="5"
+                                                                         name="leadership3"></label>
+                                                        <input type="radio" value="4" name="leadership3">
+                                                        <input type="radio" value="3" name="leadership3">
+                                                        <input type="radio" value="2" name="leadership3">
+                                                        <label><input type="radio" value="1" name="leadership3">
+                                                            ungenügend</label>
+                                                    </td>
+                                                </tr>
+                                                <tr>
+                                                    <td align="center">
+                                                        <h3>Kooperationsbereitschaft</h3>
+                                                    </td>
+                                                </tr>
+                                                <tr>
+                                                    <td align="center">
+                                                        <label><input type="radio" value="5" name="cooparation3">
+                                                            gut</label>
+                                                        <input type="radio" value="4" name="cooparation3">
+                                                        <input type="radio" value="3" name="cooparation3">
+                                                        <input type="radio" value="2" name="cooparation3">
+                                                        <label><input type="radio" value="1" name="cooparation3">
+                                                            ungenügend</label>
+                                                    </td>
+                                                </tr>
+                                                <tr>
+                                                    <td align="center">
+                                                        <h3>Pünktlichkeit</h3>
+                                                    </td>
+                                                </tr>
+                                                <tr>
+                                                    <td align="center">
+                                                        <label><input type="radio" value="5" name="punctual3">
+                                                            gut</label>
+                                                        <input type="radio" value="4" name="punctual3">
+                                                        <input type="radio" value="3" name="punctual3">
+                                                        <input type="radio" value="2" name="punctual3">
+                                                        <label><input type="radio" value="1" name="punctual3">
+                                                            ungenügend</label>
+                                                    </td>
+                                                </tr>
+                                                <tr>
+                                                    <td align="center">
+                                                        <h3>Selbstständigkeit</h3>
+                                                    </td>
+                                                </tr>
+                                                <tr>
+                                                    <td align="center">
+                                                        <label><input type="radio" value="5" name="autonomous3">
+                                                            gut</label>
+                                                        <input type="radio" value="4" name="autonomous3">
+                                                        <input type="radio" value="3" name="autonomous3">
+                                                        <input type="radio" value="2" name="autonomous3">
+                                                        <label><input type="radio" value="1" name="autonomous3">
+                                                            ungenügend</label>
+                                                    </td>
+                                                </tr>
+                                            </table>
+                                        </div>
+                                    </div>
+
+                                    <!-- Left and right controls -->
+                                    <a class="left carousel-control" href="#myCarousel" data-slide="prev">
+                                        <span class="glyphicon glyphicon-chevron-left"></span>
+                                        <span class="sr-only">Previous</span>
+                                    </a>
+                                    <a class="right carousel-control" href="#myCarousel" data-slide="next">
+                                        <span class="glyphicon glyphicon-chevron-right"></span>
+                                        <span class="sr-only">Next</span>
+                                    </a>
+                                </div>
+                                <button class="btn btn-success" id="assessThePeer">Gruppe bewerten</button>
+                        </div>
+                    </td>
+                    <td id="chat">
+                        <div class="card">
+                            <div class="card-header">
+                                <h6 class="mb-0">Gruppen+Projekt Chat</h6>
+                            </div>
+                            <div class="card-body">
+                                <ul class="list-group">
+                                    <li class="list-group-item">
+                                        <div class="media">
+                                            <div></div>
+                                            <div class="media-body">
+                                                <div class="media" style="overflow:visible;">
+                                                    <div><img src="../assets/img/1.jpg" class="mr-3"
+                                                              style="width: 25px; height:25px;"></div>
+                                                    <div class="media-body" style="overflow:visible;">
+                                                        <div class="row">
+                                                            <div class="col-md-12">
+                                                                <p><a href="#">Sara Doe:</a> This guy has been going
+                                                                    100+ MPH on side streets. <br>
+                                                                    <small class="text-muted">August 6, 2016 @ 10:35am
+                                                                    </small>
+                                                                </p>
+                                                            </div>
+                                                        </div>
+                                                    </div>
+                                                </div>
+                                            </div>
+                                        </div>
+                                    </li>
+                                    <li class="list-group-item">
+                                        <div class="media">
+                                            <div></div>
+                                            <div class="media-body">
+                                                <div class="media" style="overflow:visible;">
+                                                    <div><img src="../assets/img/2.jpg" class="mr-3"
+                                                              style="width: 25px; height:25px;"></div>
+                                                    <div class="media-body" style="overflow:visible;">
+                                                        <div class="row">
+                                                            <div class="col-md-12">
+                                                                <p><a href="#">Brennan Prill:</a> This guy has been
+                                                                    going 100+ MPH on side streets. <br>
+                                                                    <small class="text-muted">August 6, 2016 @ 10:35am
+                                                                    </small>
+                                                                </p>
+                                                            </div>
+                                                        </div>
+                                                    </div>
+                                                </div>
+                                            </div>
+                                        </div>
+                                    </li>
+                                </ul>
+                                <button class="btn btn-light">
+                                    Add Comment
+                                </button>
+                            </div>
+                        </div>
+                    </td>
+                </tr>
+            </table>
+        </div>
+    </div>
+</div>
+
+<script src="../assets/js/jquery.min.js"></script>
+<script src="../assets/bootstrap/js/bootstrap.min.js"></script>
+<script src="../assets/js/Sidebar-Menu.js"></script>
+</body>
+
+</html>
\ No newline at end of file
diff --git a/gemeinsamforschen/src/main/webapp/pages/overview-docent.html b/gemeinsamforschen/src/main/webapp/pages/overview-docent.html
index 09976e3dbdfee1f438573c5f7e6726c396f77d07..cc9f504b65cee81c9b30aefdae2a72555178b49f 100644
--- a/gemeinsamforschen/src/main/webapp/pages/overview-docent.html
+++ b/gemeinsamforschen/src/main/webapp/pages/overview-docent.html
@@ -20,7 +20,7 @@
     <table id="projects">  <!-- getElementById('projects').append um neue Projekte anzufügen -->
         <tr style="cursor:pointer" role="button">
             <td>
-                <a href="project-docent.html">
+                <a id="project1Link">
                     <h1>dummy Projekt1</h1>
                 </a>
             </td>
@@ -51,7 +51,7 @@
         </tr>
         <tr style="cursor:pointer" role="button">
             <td>
-                <a href="project-docent.html">
+                <a href="project-docent.jsp">
                     <h1>dummy Projekt2</h1>
                 </a>
             </td>
diff --git a/gemeinsamforschen/src/main/webapp/pages/overview-docent.html.orig b/gemeinsamforschen/src/main/webapp/pages/overview-docent.html.orig
new file mode 100644
index 0000000000000000000000000000000000000000..621176b5de895049ff300d1782269135a296493e
--- /dev/null
+++ b/gemeinsamforschen/src/main/webapp/pages/overview-docent.html.orig
@@ -0,0 +1,91 @@
+<!DOCTYPE html>
+<html>
+
+<head>
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <title>fltrail</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>
+</head>
+
+<body>
+<h1>Übersicht für Dozent1</h1>
+<a href="#"><span class="glyphicon glyphicon-envelope"
+                  style="font-size:27px;margin-top:-17px;margin-left:600px;"></span></a>
+<a href="#"><span class="glyphicon glyphicon-cog" style="font-size:29px;margin-left:5px;margin-top:-25px;"></span></a>
+<div>
+    <table id="projects">  <!-- getElementById('projects').append um neue Projekte anzufügen -->
+        <tr style="cursor:pointer" role="button">
+            <td>
+<<<<<<< HEAD
+                <a id="project1Link">
+=======
+                <a href="project-docent.jsp">
+>>>>>>> 9bbae0ff75b2597ab35479a24d47c12e7a4cc0fd
+                    <h1>dummy Projekt1</h1>
+                </a>
+            </td>
+        </tr>
+        <tr>
+            <td>
+                <div style="width:100px;"></div>
+                <div style="width:741px;">
+                    <div class="panel panel-default">
+                        <div class="panel-heading">
+                            <h3 class="panel-title">Newsfeed </h3>
+                        </div>
+                        <div class="panel-body">
+                            <ul class="list-group">
+                                <li class="list-group-item">
+                                    <span>erste Abgabe vom Dozenten zu dd.mm.yyyy gefordert</span>
+                                </li>
+                                <li class="list-group-item"><span>Beitrag von Student1 wurde hochgeladen</span></li>
+                                <li class="list-group-item"><span>Gruppe "gemeinsam forschen" rockt das Haus</span></li>
+                            </ul>
+                        </div>
+                    </div>
+                </div>
+            </td>
+        </tr>
+        <tr>
+            <td></td>
+        </tr>
+        <tr style="cursor:pointer" role="button">
+            <td>
+                <a href="project-docent.jsp">
+                    <h1>dummy Projekt2</h1>
+                </a>
+            </td>
+        </tr>
+        <tr>
+            <td>
+                <div style="width:100px;"></div>
+                <div style="width:741px;">
+                    <div class="panel panel-default">
+                        <div class="panel-heading">
+                            <h3 class="panel-title">Newsfeed </h3>
+                        </div>
+                        <div class="panel-body">
+                            <ul class="list-group">
+                                <li class="list-group-item">
+                                    <span>erste Abgabe vom Dozenten zu dd.mm.yyyy gefordert</span>
+                                </li>
+                                <li class="list-group-item"><span>Beitrag von Student1 wurde hochgeladen</span></li>
+                                <li class="list-group-item"><span>Gruppe "gemeinsam forschen" rockt das Haus</span></li>
+                            </ul>
+                        </div>
+                    </div>
+                </div>
+            </td>
+        </tr>
+    </table>
+</div>
+<button class="btn btn-default" type="button" style="margin-left:250px;">Projekt erstellen</button>
+<script src="../assets/js/jquery.min.js"></script>
+<script src="../assets/bootstrap/js/bootstrap.min.js"></script>
+</body>
+
+</html>
\ No newline at end of file
diff --git a/gemeinsamforschen/src/main/webapp/pages/overview-student.html b/gemeinsamforschen/src/main/webapp/pages/overview-student.html
index 5c56a57281374b88dea806cf08e86a14e2e65cfd..feb1ce71f4f1eefaae7b6ec8bd35341670fafa1c 100644
--- a/gemeinsamforschen/src/main/webapp/pages/overview-student.html
+++ b/gemeinsamforschen/src/main/webapp/pages/overview-student.html
@@ -9,6 +9,9 @@
     <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>
+    <script src="../assets/js/utility.js"></script>
+    <script src="../assets/js/overview-student.js"></script>
+
 </head>
 
 <body>
@@ -20,7 +23,7 @@
     <table id="projects">  <!-- getElementById('projects').append um neue Projekte anzufügen -->
         <tr style="cursor:pointer" role="button">
             <td>
-                <a href="project-docent.html">
+                <a id="project1Link">
                     <h1>dummy Projekt1</h1>
                 </a>
             </td>
@@ -51,7 +54,7 @@
         </tr>
         <tr style="cursor:pointer" role="button">
             <td>
-                <a href="project-docent.html">
+                <a href="project-docent.jsp">
                     <h1>dummy Projekt2</h1>
                 </a>
             </td>
diff --git a/gemeinsamforschen/src/main/webapp/pages/overview-student.html.orig b/gemeinsamforschen/src/main/webapp/pages/overview-student.html.orig
new file mode 100644
index 0000000000000000000000000000000000000000..db7445c800029d1c311a2a61f6528428a110ae85
--- /dev/null
+++ b/gemeinsamforschen/src/main/webapp/pages/overview-student.html.orig
@@ -0,0 +1,94 @@
+<!DOCTYPE html>
+<html>
+
+<head>
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <title>fltrail</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>
+    <script src="../assets/js/utility.js"></script>
+    <script src="../assets/js/overview-student.js"></script>
+
+</head>
+
+<body>
+<h1>Übersicht für Student1</h1>
+<a href="#"><span class="glyphicon glyphicon-envelope"
+                  style="font-size:27px;margin-top:-17px;margin-left:600px;"></span></a>
+<a href="#"><span class="glyphicon glyphicon-cog" style="font-size:29px;margin-left:5px;margin-top:-25px;"></span></a>
+<div>
+    <table id="projects">  <!-- getElementById('projects').append um neue Projekte anzufügen -->
+        <tr style="cursor:pointer" role="button">
+            <td>
+<<<<<<< HEAD
+                <a id="project1Link">
+=======
+                <a href="project-docent.jsp">
+>>>>>>> 9bbae0ff75b2597ab35479a24d47c12e7a4cc0fd
+                    <h1>dummy Projekt1</h1>
+                </a>
+            </td>
+        </tr>
+        <tr>
+            <td>
+                <div style="width:100px;"></div>
+                <div style="width:741px;">
+                    <div class="panel panel-default">
+                        <div class="panel-heading">
+                            <h3 class="panel-title">Newsfeed </h3>
+                        </div>
+                        <div class="panel-body">
+                            <ul class="list-group">
+                                <li class="list-group-item">
+                                    <span>erste Abgabe vom Dozenten zu dd.mm.yyyy gefordert</span>
+                                </li>
+                                <li class="list-group-item"><span>Beitrag von Student1 wurde hochgeladen</span></li>
+                                <li class="list-group-item"><span>Gruppe "gemeinsam forschen" rockt das Haus</span></li>
+                            </ul>
+                        </div>
+                    </div>
+                </div>
+            </td>
+        </tr>
+        <tr>
+            <td></td>
+        </tr>
+        <tr style="cursor:pointer" role="button">
+            <td>
+                <a href="project-docent.jsp">
+                    <h1>dummy Projekt2</h1>
+                </a>
+            </td>
+        </tr>
+        <tr>
+            <td>
+                <div style="width:100px;"></div>
+                <div style="width:741px;">
+                    <div class="panel panel-default">
+                        <div class="panel-heading">
+                            <h3 class="panel-title">Newsfeed </h3>
+                        </div>
+                        <div class="panel-body">
+                            <ul class="list-group">
+                                <li class="list-group-item">
+                                    <span>erste Abgabe vom Dozenten zu dd.mm.yyyy gefordert</span>
+                                </li>
+                                <li class="list-group-item"><span>Beitrag von Student1 wurde hochgeladen</span></li>
+                                <li class="list-group-item"><span>Gruppe "gemeinsam forschen" rockt das Haus</span></li>
+                            </ul>
+                        </div>
+                    </div>
+                </div>
+            </td>
+        </tr>
+    </table>
+</div>
+    </div><button class="btn btn-default" type="button" style="margin-left:250px;">Projekt beitreten</button>
+    <script src="../assets/js/jquery.min.js"></script>
+    <script src="../assets/bootstrap/js/bootstrap.min.js"></script>
+</body>
+
+</html>
\ No newline at end of file
diff --git a/gemeinsamforschen/src/main/webapp/pages/project-docent.html b/gemeinsamforschen/src/main/webapp/pages/project-docent.html
deleted file mode 100644
index 232c9e7711e845bf35552c8571a59c497c7d12da..0000000000000000000000000000000000000000
--- a/gemeinsamforschen/src/main/webapp/pages/project-docent.html
+++ /dev/null
@@ -1,80 +0,0 @@
-<!DOCTYPE html>
-<html>
-
-<head>
-    <meta charset="utf-8">
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <title>project-student (copy)</title>
-    <link rel="stylesheet" href="../assets/bootstrap/css/bootstrap.min.css">
-    <link rel="stylesheet" href="../assets/css/styles.css">
-</head>
-
-<body>
-    <h1>dummy Projekt1 für Dozent1</h1><button class="btn btn-default" type="button">Gruppen erstellen</button><button class="btn btn-default" type="button">Projekt-chat öffnen</button><button class="btn btn-default" type="button">Projekt finalisieren</button>
-    <button
-        class="btn btn-default" type="button">Exportiere Projektergebnisse</button><button class="btn btn-default" type="button">Exportiere Zwischenstand</button><button class="btn btn-default" type="button">Quizfrage erstellen</button>
-        <div class="table-responsive">
-            <table class="table">
-                <thead>
-                    <tr>
-                        <th>Gruppe1 </th>
-                        <th>Beiträge </th>
-                    </tr>
-                </thead>
-                <tbody>
-                    <tr>
-                        <td>student1 </td>
-                        <td>Interfaces </td>
-                    </tr>
-                    <tr>
-                        <td>student2 </td>
-                        <td>Design </td>
-                    </tr>
-                </tbody>
-            </table>
-        </div>
-        <div class="table-responsive">
-            <table class="table">
-                <thead>
-                    <tr>
-                        <th>Gruppe2 </th>
-                        <th>Beiträge </th>
-                    </tr>
-                </thead>
-                <tbody>
-                    <tr>
-                        <td>student3 </td>
-                        <td>Interfaces </td>
-                    </tr>
-                    <tr>
-                        <td>student4 </td>
-                        <td>Design </td>
-                    </tr>
-                </tbody>
-            </table>
-        </div>
-        <div class="table-responsive">
-            <table class="table">
-                <thead>
-                    <tr>
-                        <th>Gruppe3 </th>
-                        <th>Beiträge </th>
-                    </tr>
-                </thead>
-                <tbody>
-                    <tr>
-                        <td>student5 </td>
-                        <td>Interfaces </td>
-                    </tr>
-                    <tr>
-                        <td>student6 </td>
-                        <td>Design </td>
-                    </tr>
-                </tbody>
-            </table>
-        </div>
-        <script src="../assets/js/jquery.min.js"></script>
-        <script src="../assets/bootstrap/js/bootstrap.min.js"></script>
-</body>
-
-</html>
\ No newline at end of file
diff --git a/gemeinsamforschen/src/main/webapp/pages/project-docent.jsp b/gemeinsamforschen/src/main/webapp/pages/project-docent.jsp
new file mode 100644
index 0000000000000000000000000000000000000000..a67e761165a9ddf5b5d6879c41d2896b9581a771
--- /dev/null
+++ b/gemeinsamforschen/src/main/webapp/pages/project-docent.jsp
@@ -0,0 +1,137 @@
+<!DOCTYPE html>
+<%@ taglib prefix = "communication" uri = "/communication/chatWindow.tld"%>
+<html>
+
+<head>
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <title>project-student (copy)</title>
+    <link rel="stylesheet" href="../assets/bootstrap/css/bootstrap.min.css">
+    <link rel="stylesheet" href="../assets/css/Community-ChatComments.css">
+    <link rel="stylesheet" href="../assets/css/styles.css">
+</head>
+
+<body>
+    <h1>dummy Projekt1 für Dozent1</h1><button class="btn btn-default" type="button">Gruppen erstellen</button><button class="btn btn-default" type="button">Projekt finalisieren</button><button class="btn btn-default" type="button">Exportiere Projektergebnisse</button>
+    <button
+        class="btn btn-default" type="button">Exportiere Zwischenstand</button><button class="btn btn-default" type="button">Quizfrage erstellen</button>
+        <div>
+            <div class="container">
+                <div class="row">
+                    <div class="col-md-6">
+                        <div class="table-responsive" style="width:294px;">
+                            <table class="table">
+                                <thead>
+                                    <tr>
+                                        <th>Gruppe1 </th>
+                                        <th>Beiträge </th>
+                                    </tr>
+                                </thead>
+                                <tbody>
+                                    <tr>
+                                        <td>student1 </td>
+                                        <td>Interfaces </td>
+                                    </tr>
+                                    <tr>
+                                        <td>student2 </td>
+                                        <td>Design </td>
+                                    </tr>
+                                </tbody>
+                            </table>
+                        </div>
+                        <div class="table-responsive" style="width:294px;">
+                            <table class="table">
+                                <thead>
+                                    <tr>
+                                        <th>Gruppe2 </th>
+                                        <th>Beiträge </th>
+                                    </tr>
+                                </thead>
+                                <tbody>
+                                    <tr>
+                                        <td>student3 </td>
+                                        <td>Interfaces </td>
+                                    </tr>
+                                    <tr>
+                                        <td>student4 </td>
+                                        <td>Design </td>
+                                    </tr>
+                                </tbody>
+                            </table>
+                        </div>
+                        <div class="table-responsive" style="width:294px;">
+                            <table class="table">
+                                <thead>
+                                    <tr>
+                                        <th>Gruppe3 </th>
+                                        <th>Beiträge </th>
+                                    </tr>
+                                </thead>
+                                <tbody>
+                                    <tr>
+                                        <td>student5 </td>
+                                        <td>Interfaces </td>
+                                    </tr>
+                                    <tr>
+                                        <td>student6 </td>
+                                        <td>Design </td>
+                                    </tr>
+                                </tbody>
+                            </table>
+                        </div>
+                    </div>
+                    <div class="col-md-6">
+                        <div class="panel panel-default">
+                            <div class="panel-heading">
+                                <h3 class="panel-title">ProjektChat</h3>
+                            </div>
+                            <div class="panel-body" style="height:233px;">
+                                <ul class="list-group">
+                                    <li class="list-group-item" style="margin-bottom:6px;">
+                                        <div class="media">
+                                            <div class="media-left"><a></a></div>
+                                            <div class="media-body">
+                                                <div class="media" style="overflow:visible;">
+                                                    <div class="media-left"><a><img src="../assets/img/1.jpg" class="img-rounded" style="width: 25px; height:25px;"></a></div>
+                                                    <div class="media-body" style="overflow:visible;">
+                                                        <div class="row">
+                                                            <div class="col-md-12">
+                                                                <p><a href="#">Sara Doe:</a> This guy has been going 100+ MPH on side streets. <br>
+<small class="text-muted">August 6, 2016 @ 10:35am </small></p>
+                                                            </div>
+                                                        </div>
+                                                    </div>
+                                                </div>
+                                            </div>
+                                        </div>
+                                    </li>
+                                    <li class="list-group-item" style="margin-bottom:6px;">
+                                        <div class="media">
+                                            <div class="media-left"><a></a></div>
+                                            <div class="media-body">
+                                                <div class="media" style="overflow:visible;">
+                                                    <div class="media-left"><a><img src="../assets/img/1.jpg" class="img-rounded" style="width: 25px; height:25px;"></a></div>
+                                                    <div class="media-body" style="overflow:visible;">
+                                                        <div class="row">
+                                                            <div class="col-md-12">
+                                                                <p><a href="#">Brennan Prill:</a> This guy has been going 100+ MPH on side streets. <br>
+<small class="text-muted">August 6, 2016 @ 10:35am </small></p>
+                                                            </div>
+                                                        </div>
+                                                    </div>
+                                                </div>
+                                            </div>
+                                        </div>
+                                    </li>
+                                </ul><button class="btn btn-default" type="button" style="margin-left:601px;margin-top:-9px;">Add Comment</button></div>
+                        </div>
+                    </div>
+                </div>
+            </div>
+        </div>
+    <communication:chatWindow orientation="right"></communication:chatWindow>
+        <script src="../assets/js/jquery.min.js"></script>
+        <script src="../assets/bootstrap/js/bootstrap.min.js"></script>
+</body>
+
+</html>
\ No newline at end of file
diff --git a/gemeinsamforschen/src/main/webapp/pages/project-student.html b/gemeinsamforschen/src/main/webapp/pages/project-student.html
deleted file mode 100644
index ef556ac56bc5b6935c973a1b5c65307dd9688911..0000000000000000000000000000000000000000
--- a/gemeinsamforschen/src/main/webapp/pages/project-student.html
+++ /dev/null
@@ -1,58 +0,0 @@
-<!DOCTYPE html>
-<html>
-
-<head>
-    <meta charset="utf-8">
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <title>project-student</title>
-    <link rel="stylesheet" href="../assets/bootstrap/css/bootstrap.min.css">
-    <link rel="stylesheet" href="../assets/css/styles.css">
-    <link rel="stylesheet" href="/core/assets/css/Team-Boxed.css">
-</head>
-
-<body>
-    <h1>dummy Projekt1 für Student1</h1>
-    <div></div>
-    <div class="team-boxed" style="height:581px;">
-        <div class="container">
-            <div class="intro">
-                <h2 class="text-center">deine Gruppe</h2>
-            </div>
-            <div class="row people">
-                <div class="col-md-4 col-sm-6 item">
-                    <div class="box"><img class="img-circle" src="../core/assets/img/1.jpg">
-                        <h3 class="name">student1 </h3>
-                        <p class="title"> </p>
-                        <ul>
-                            <li>Interfaces hochgeladen</li>
-                            <li>Design erstellt</li>
-                        </ul>
-                    </div>
-                </div>
-                <div class="col-md-4 col-sm-6 item">
-                    <div class="box"><img class="img-circle" src="../core/assets/img/2.jpg">
-                        <h3 class="name">student2 </h3>
-                        <p class="title"> </p>
-                        <ul>
-                            <li>Interfaces hochgeladen</li>
-                        </ul>
-                    </div>
-                </div>
-                <div class="col-md-4 col-sm-6 item">
-                    <div class="box"><img class="img-circle" src="../core/assets/img/3.jpg">
-                        <h3 class="name">student3 </h3>
-                    </div>
-                    <ul>
-                        <li>Interace hochgeladen</li>
-                    </ul>
-                </div>
-            </div>
-        </div>
-    </div><button class="btn btn-default" type="button">Projekt-chat starten</button><button class="btn btn-default" type="button">Quizfrage erstellen</button><button class="btn btn-default" type="button">Gruppen-chat starten</button><button class="btn btn-default"
-        type="button">ePortfolio </button><button class="btn btn-default" type="button">Beitrag hochladen</button><button class="btn btn-default" type="button">feedback </button><button class="btn btn-default" type="button" disabled="disabled">Bewertung </button>
-    <script
-        src="../assets/js/jquery.min.js"></script>
-        <script src="../assets/bootstrap/js/bootstrap.min.js"></script>
-</body>
-
-</html>
\ No newline at end of file
diff --git a/gemeinsamforschen/src/main/webapp/pages/project-student.jsp b/gemeinsamforschen/src/main/webapp/pages/project-student.jsp
new file mode 100644
index 0000000000000000000000000000000000000000..56d203004a59c56540948d5011d9f3089cd8908b
--- /dev/null
+++ b/gemeinsamforschen/src/main/webapp/pages/project-student.jsp
@@ -0,0 +1,147 @@
+<%@ taglib uri="../core/pages/gemeinsamForschen.tld" prefix="menu"%>
+
+<!DOCTYPE html>
+<html>
+
+<head>
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <title>muster-gemeinsam-forschen</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">
+</head>
+
+<body>
+<div id="wrapper">
+    <menu:menu></menu:menu>
+
+    <div class="page-content-wrapper">
+        <div class="container-fluid">
+            <h1 id="projectId">project1
+            <a href="#">
+                <span class="glyphicon glyphicon-envelope"
+                      style="font-size:27px;margin-top:-17px;margin-left:600px;"></span>
+            </a>
+            <a href="#">
+                <span class="glyphicon glyphicon-cog" style="font-size:29px;margin-left:5px;margin-top:-25px;"></span>
+            </a></h1>
+        </div>
+        <div>
+            <table>
+                <tr>
+                    <td  id="yourContent">
+                        <h1>your content guys and girls!</h1>
+                        <!-- here will be all the content -->
+                        <table>
+                            <tr>
+                                <td>
+                                    <h3>student1</h3>
+                                    <img src="../assets/img/1.jpg">
+                                    <a href="#">student1@uni.de</a>
+                                    <hr>
+                                    <ul>
+                                        <li>Projektübersicht hochgeladen</li>
+                                        <li>Blumen ins Hausaufgabenheft geklebt</li>
+                                    </ul>
+                                </td>
+                                <td> </td>
+                                <td>
+                                    <h3>student2</h3>
+                                    <img src="../assets/img/2.jpg">
+                                    <a href="#">student2@uni.de</a>
+                                    <hr>
+                                    <ul>
+                                        <li>feedback zu Herbarium im Hausaufgabenheft gegeben</li>
+                                        <li>Blumen an Vegetarier verfüttert</li>
+                                        <li>Die armen Vegetarier</li>
+                                    </ul>
+                                </td>
+                                <td> </td>
+                                <td>
+                                    <h3>student3</h3>
+                                    <img src="../assets/img/3.jpg">
+                                    <a href="#">student3@uni.de</a>
+                                    <hr>
+                                    <ul>
+                                        <li>Viva la Floristika</li>
+                                    </ul>
+                                </td>
+                            </tr>
+                        </table>
+                    </td>
+                    <td  id="chat">
+                        <div class="card">
+                            <div class="card-header">
+                                <h6 class="mb-0">Gruppen+Projekt Chat</h6>
+                            </div>
+                            <div class="card-body">
+                                <ul class="list-group">
+                                    <li class="list-group-item">
+                                        <div class="media">
+                                            <div></div>
+                                            <div class="media-body">
+                                                <div class="media" style="overflow:visible;">
+                                                    <div><img src="../assets/img/1.jpg" class="mr-3"
+                                                              style="width: 25px; height:25px;"></div>
+                                                    <div class="media-body" style="overflow:visible;">
+                                                        <div class="row">
+                                                            <div class="col-md-12">
+                                                                <p><a href="#">Sara Doe:</a> This guy has been going
+                                                                    100+ MPH on side streets. <br>
+                                                                    <small class="text-muted">August 6, 2016 @ 10:35am
+                                                                    </small>
+                                                                </p>
+                                                            </div>
+                                                        </div>
+                                                    </div>
+                                                </div>
+                                            </div>
+                                        </div>
+                                    </li>
+                                    <li class="list-group-item">
+                                        <div class="media">
+                                            <div></div>
+                                            <div class="media-body">
+                                                <div class="media" style="overflow:visible;">
+                                                    <div><img src="../assets/img/2.jpg" class="mr-3"
+                                                              style="width: 25px; height:25px;"></div>
+                                                    <div class="media-body" style="overflow:visible;">
+                                                        <div class="row">
+                                                            <div class="col-md-12">
+                                                                <p><a href="#">Brennan Prill:</a> This guy has been
+                                                                    going 100+ MPH on side streets. <br>
+                                                                    <small class="text-muted">August 6, 2016 @ 10:35am
+                                                                    </small>
+                                                                </p>
+                                                            </div>
+                                                        </div>
+                                                    </div>
+                                                </div>
+                                            </div>
+                                        </div>
+                                    </li>
+                                </ul>
+                                <button class="btn btn-light">
+                                    Add Comment
+                                </button>
+                            </div>
+                        </div>
+                    </td>
+                </tr>
+            </table>
+        </div>
+    </div>
+</div>
+
+<script src="../assets/js/jquery.min.js"></script>
+<script src="../assets/bootstrap/js/bootstrap.min.js"></script>
+<script src="../assets/js/Sidebar-Menu.js"></script>
+</body>
+
+</html>
\ No newline at end of file
diff --git a/gemeinsamforschen/src/main/webapp/pages/takeQuiz.jsp b/gemeinsamforschen/src/main/webapp/pages/takeQuiz.jsp
new file mode 100644
index 0000000000000000000000000000000000000000..cfda3512312ccec09bdd70ec66a5456405ed26b7
--- /dev/null
+++ b/gemeinsamforschen/src/main/webapp/pages/takeQuiz.jsp
@@ -0,0 +1,117 @@
+<%@ taglib uri="../core/pages/gemeinsamForschen.tld" prefix="menu"%>
+<!DOCTYPE html>
+<html>
+
+<head>
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <title>muster-gemeinsam-forschen</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>
+    <script src="../assets/js/takeQuiz.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">
+</head>
+
+<body>
+
+
+<div id="wrapper">
+    <menu:menu></menu:menu>
+    <div class="page-content-wrapper">
+        <div class="container-fluid">
+            <h1 id="projectId">project1
+                <a href="#">
+                <span class="glyphicon glyphicon-envelope"
+                      style="font-size:27px;margin-top:-17px;margin-left:600px;"></span>
+                </a>
+                <a href="#">
+                    <span class="glyphicon glyphicon-cog" style="font-size:29px;margin-left:5px;margin-top:-25px;"></span>
+                </a></h1>
+        </div>
+        <div>
+            <table>
+                <tr>
+                    <td  id="yourContent">
+                        <h1>Quiz for project1 </h1>
+                        <!-- here will be all the content -->
+
+
+
+                        <table class="table-striped">
+                            <tbody id="tableQuiz">
+
+                            </tbody>
+                        </table>
+                        <button id="submitQuiz" class="btn btn-success">Antwort speichern</button>
+                    </td>
+                    <td  id="chat">
+                        <div class="card">
+                            <div class="card-header">
+                                <h6 class="mb-0">Gruppen+Projekt Chat</h6>
+                            </div>
+                            <div class="card-body">
+                                <ul class="list-group">
+                                    <li class="list-group-item">
+                                        <div class="media">
+                                            <div></div>
+                                            <div class="media-body">
+                                                <div class="media" style="overflow:visible;">
+                                                    <div><img src="../assets/img/1.jpg" class="mr-3"
+                                                              style="width: 25px; height:25px;"></div>
+                                                    <div class="media-body" style="overflow:visible;">
+                                                        <div class="row">
+                                                            <div class="col-md-12">
+                                                                <p><a href="#">Sara Doe:</a> This guy has been going
+                                                                    100+ MPH on side streets. <br>
+                                                                    <small class="text-muted">August 6, 2016 @ 10:35am
+                                                                    </small>
+                                                                </p>
+                                                            </div>
+                                                        </div>
+                                                    </div>
+                                                </div>
+                                            </div>
+                                        </div>
+                                    </li>
+                                    <li class="list-group-item">
+                                        <div class="media">
+                                            <div></div>
+                                            <div class="media-body">
+                                                <div class="media" style="overflow:visible;">
+                                                    <div><img src="../assets/img/2.jpg" class="mr-3"
+                                                              style="width: 25px; height:25px;"></div>
+                                                    <div class="media-body" style="overflow:visible;">
+                                                        <div class="row">
+                                                            <div class="col-md-12">
+                                                                <p><a href="#">Brennan Prill:</a> This guy has been
+                                                                    going 100+ MPH on side streets. <br>
+                                                                    <small class="text-muted">August 6, 2016 @ 10:35am
+                                                                    </small>
+                                                                </p>
+                                                            </div>
+                                                        </div>
+                                                    </div>
+                                                </div>
+                                            </div>
+                                        </div>
+                                    </li>
+                                </ul>
+                                <button class="btn btn-light">
+                                    Add Comment
+                                </button>
+                            </div>
+                        </div>
+                    </td>
+                </tr>
+            </table>
+        </div>
+    </div>
+</div>
+</body>
+
+</html>
\ No newline at end of file
diff --git a/gemeinsamforschen/src/scripts/dbschema/fltrail.sql b/gemeinsamforschen/src/scripts/dbschema/fltrail.sql
index d7978655cfb76571a9bea19f726cacc6ca03364d..c92c03da44cc2448ac7b5e9d09cb274997e2459d 100644
--- a/gemeinsamforschen/src/scripts/dbschema/fltrail.sql
+++ b/gemeinsamforschen/src/scripts/dbschema/fltrail.sql
@@ -1,48 +1,67 @@
-SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
-SET time_zone = "+00:00";
+CREATE DATABASE IF NOT EXISTS `fltrail`
+  DEFAULT CHARACTER SET utf8
+  COLLATE utf8_general_ci;
+USE `fltrail`;
 
-/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
-/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
-/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
-/*!40101 SET NAMES utf8mb4 */;
+CREATE TABLE if not exists `projects` (
+  `id`            varchar(400) NOT NULL,
+  `password`      varchar(400) NOT NULL,
+  `active`        tinyint(1)   NOT NULL,
+  `timecreated`   timestamp    NOT NULL DEFAULT CURRENT_TIMESTAMP
+  ON UPDATE CURRENT_TIMESTAMP,
+  `author`        varchar(400) NOT NULL,
+  `adminPassword` varchar(400) NOT NULL,
+  `token`         varchar(400) NOT NULL
+)
+  ENGINE = InnoDB
+  DEFAULT CHARSET = utf8;
 
-CREATE DATABASE IF NOT EXISTS `fltrail` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
-USE `fltrail`;
 
-CREATE TABLE `projects` (
-  `id` varchar(400) NOT NULL,
-  `password` varchar(400) NOT NULL,
-  `activ` tinyint(1) NOT NULL,
-  `timecreated` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
-  `author` varchar(400) NOT NULL,
-  `adminpassword` varchar(400) NOT NULL,
-  `token` varchar(400) NOT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-
-CREATE TABLE `tags` (
+CREATE TABLE if not exists `groups` (
+  `id`         int          NOT NULL AUTO_INCREMENT,
+  `projectId`  varchar(400) NOT NULL,
+  `chatRoomId` varchar(400) NOT NULL,
+  PRIMARY KEY (id)
+)
+  ENGINE = InnoDB
+  DEFAULT CHARSET = utf8;
+
+CREATE TABLE if not exists groupuser
+(
+  userEmail varchar(400) NOT NULL,
+  groupId   int          NOT NULL
+)
+  ENGINE = InnoDB
+  DEFAULT CHARSET = utf8;
+
+CREATE TABLE if not exists `tags` (
   `projectId` varchar(400) NOT NULL,
-  `tag` varchar(400) NOT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-
-CREATE TABLE `users` (
-  `name` varchar(400) NOT NULL,
-  `password` varchar(200) NOT NULL,
-  `email` varchar(400) NOT NULL,
-  `token` varchar(800) NOT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-
-CREATE TABLE projectuser
-        (
-          projectId varchar(400) NOT NULL,
-          userId varchar(400) NOT NULL
-);  ENGINE=InnoDB DEFAULT CHARSET=utf8;
+  `tag`       varchar(400) NOT NULL
+)
+  ENGINE = InnoDB
+  DEFAULT CHARSET = utf8;
 
-alter table users
-  add isStudent tinyint(1) default '1' null;
+CREATE TABLE if not exists `users` (
+  `name`                varchar(400) NOT NULL,
+  `password`            varchar(200) NOT NULL,
+  `email`               varchar(255) NOT NULL,
+  `token`               varchar(800) NOT NULL,
+  `rocketChatId`        varchar(400) NOT NULL,
+  `rocketChatAuthToken` varchar(800) NOT NULL,
+  UNIQUE (email)
+)
+  ENGINE = InnoDB
+  DEFAULT CHARSET = utf8;
 
+CREATE TABLE if not exists projectuser
+(
+  projectId varchar(400) NOT NULL,
+  userId    varchar(400) NOT NULL
+)
+  ENGINE = InnoDB
+  DEFAULT CHARSET = utf8;
 
+alter table users
+  add isStudent tinyint(1) default '1' null;
 
 
-/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
-/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
-/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
diff --git a/gemeinsamforschen/src/test/java/unipotsdam/gf/interfaces/AnnotationTest.java b/gemeinsamforschen/src/test/java/unipotsdam/gf/interfaces/AnnotationTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..6c64c0be2de3d76d89849450bb797ab921876b79
--- /dev/null
+++ b/gemeinsamforschen/src/test/java/unipotsdam/gf/interfaces/AnnotationTest.java
@@ -0,0 +1,186 @@
+package unipotsdam.gf.interfaces;
+
+import org.junit.Before;
+import org.junit.Test;
+import unipotsdam.gf.modules.annotation.controller.AnnotationController;
+import unipotsdam.gf.modules.annotation.model.Annotation;
+import unipotsdam.gf.modules.annotation.model.AnnotationPatchRequest;
+import unipotsdam.gf.modules.annotation.model.AnnotationPostRequest;
+
+import java.util.ArrayList;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+/**
+ * @author Sven Kästle
+ * skaestle@uni-potsdam.de
+ */
+public class AnnotationTest {
+
+    // declare annotation controller
+    AnnotationController controller;
+
+    @Before
+    public void initializeTest() {
+        // initialize controller
+        controller = new AnnotationController();
+    }
+
+    @Test
+    public void testAddAnnotation() {
+
+        // initialize body
+        String body = "body_testAddAnnotation";
+
+        // prepare and execute request
+        AnnotationPostRequest annotationPostRequest = new AnnotationPostRequest(1, 2, body, 4, 5);
+        Annotation response = controller.addAnnotation(annotationPostRequest);
+
+        // the new annotation should be found in the database
+        assertTrue("Can't find annotation with the id " + response.getId(), controller.existsAnnotationId(response.getId()));
+
+        // delete the new annotation
+        controller.deleteAnnotation(response.getId());
+
+    }
+
+    @Test
+    public void testAlterAnnotation() {
+
+        // initialize old and new body
+        String oldBody = "bodyOld_testAlterAnnotation";
+        String newBody = "bodyNew_testAlterAnnotation";
+
+        // save new annotation in database
+        AnnotationPostRequest annotationPostRequest = new AnnotationPostRequest(0, 0, oldBody, 0, 0);
+        Annotation response = controller.addAnnotation(annotationPostRequest);
+
+        // the new annotation should be found in the database
+        assertTrue("Can't find annotation with the id " + response.getId(), controller.existsAnnotationId(response.getId()));
+
+        // the annotation's body should be "testAlterAnnotation_oldBody"
+        assertEquals("The body of the annotation should be " + oldBody + " but was " + response.getBody(), oldBody, response.getBody());
+
+        // alter the annotation and update the database
+        AnnotationPatchRequest annotationPatchRequest = new AnnotationPatchRequest(newBody);
+        controller.alterAnnotation(response.getId(), annotationPatchRequest);
+
+        // receive the new annotation
+        Annotation newResponse = controller.getAnnotation(response.getId());
+
+        // the annotation's body should be "testAlterAnnotation_newBody"
+        assertEquals("The body of the annotation should be " + newBody + " but was " + newResponse.getBody(), newBody, newResponse.getBody());
+
+        // delete the annotation
+        controller.deleteAnnotation(response.getId());
+
+
+    }
+
+    @Test
+    public void testDeleteAnnotation() {
+
+        // initialize old and new body
+        String body = "body_testDeleteAnnotation";
+
+        // save new annotation in database
+        AnnotationPostRequest annotationPostRequest = new AnnotationPostRequest(0, 0, body, 0, 0);
+        Annotation response = controller.addAnnotation(annotationPostRequest);
+
+        // the new annotation should be found in the database
+        assertTrue("Can't find annotation with the id " + response.getId(), controller.existsAnnotationId(response.getId()));
+
+        // delete the annotation
+        controller.deleteAnnotation(response.getId());
+
+        // the annotation shouldn't be found in the database
+        assertFalse("There shouldn't be an annotation with the id " + response.getId(), controller.existsAnnotationId(response.getId()));
+
+    }
+
+    @Test
+    public void testGetAnnotation() {
+
+        // initialize body
+        String body = "body_testGetAnnotation";
+
+        // save new annotation in database
+        AnnotationPostRequest annotationPostRequest = new AnnotationPostRequest(0, 0, body, 0, 0);
+        Annotation response = controller.addAnnotation(annotationPostRequest);
+
+        // receive the new annotation
+        Annotation getResponse = controller.getAnnotation(response.getId());
+
+        // the annotation's body should be "testAlterAnnotation_newBody"
+        assertEquals("The body of the annotation should be " + body + " but was " + getResponse.getBody(), body, getResponse.getBody());
+
+        // delete the new annotation
+        controller.deleteAnnotation(response.getId());
+
+    }
+
+    @Test
+    public void testGetAnnotations() {
+
+        // initialize bodys
+        String body1 = "body1_testGetAnnotations";
+        String body2 = "body2_testGetAnnotations";
+        String body3 = "body3_testGetAnnotations";
+
+        // initialize targetIds
+        ArrayList<Integer> targetIds = new ArrayList<>();
+        targetIds.add(-1);
+        targetIds.add(-2);
+
+        // save new annotations in database
+        AnnotationPostRequest request1 = new AnnotationPostRequest(0, targetIds.get(0), body1, 0, 0);
+        AnnotationPostRequest request2 = new AnnotationPostRequest(0, targetIds.get(1), body2, 0, 0);
+        AnnotationPostRequest request3 = new AnnotationPostRequest(0, targetIds.get(1), body3, 0, 0);
+        controller.addAnnotation(request1);
+        controller.addAnnotation(request2);
+        controller.addAnnotation(request3);
+
+        // receive the new annotations
+        ArrayList<Annotation> getResponse = controller.getAnnotations(targetIds.get(1));
+
+        // the size of the  getResponse should be 2
+        assertEquals("The size of the response should be 2 but was " + getResponse.size(), 2, getResponse.size());
+
+        // receive the new annotations
+        ArrayList<Annotation> getResponseNew = controller.getAnnotations(targetIds.get(0));
+
+        // the size of the  getResponse should be 2
+        assertEquals("The size of the response should be 1 but was " + getResponseNew.size(), 1, getResponseNew.size());
+
+        // delete annotations from database
+        controller.deleteAnnotation(getResponse.get(0).getId());
+        controller.deleteAnnotation(getResponse.get(1).getId());
+        controller.deleteAnnotation(getResponseNew.get(0).getId());
+
+    }
+
+    @Test
+    public void testExistsAnnotationId() {
+
+        // initialize body and bad id
+        String body = "body_testExistsAnnotationId";
+        String badId = "badId";
+
+        // save new annotation in database
+        AnnotationPostRequest annotationPostRequest = new AnnotationPostRequest(0, 0, body, 0, 0);
+        Annotation response = controller.addAnnotation(annotationPostRequest);
+
+        // the annotation shouldn't be found in the database
+        assertFalse("There shouldn't be an annotation with the id " + badId, controller.existsAnnotationId(badId));
+
+        // the new annotation should be found in the database
+        assertTrue("There should be an annotation with the id " + response.getId(), controller.existsAnnotationId(response.getId()));
+
+        // delete annotation from database
+        controller.deleteAnnotation(response.getId());
+
+    }
+
+}
diff --git a/gemeinsamforschen/src/test/java/unipotsdam/gf/interfaces/ManagementTest.java b/gemeinsamforschen/src/test/java/unipotsdam/gf/interfaces/ManagementTest.java
index 9463acbdaa8eb72ef80b9bd13b4fe856c033eed8..8e71c0dcba017d321a6af5540fb843ea8ff7352c 100644
--- a/gemeinsamforschen/src/test/java/unipotsdam/gf/interfaces/ManagementTest.java
+++ b/gemeinsamforschen/src/test/java/unipotsdam/gf/interfaces/ManagementTest.java
@@ -6,12 +6,10 @@ import unipotsdam.gf.core.management.project.Project;
 import unipotsdam.gf.core.management.user.User;
 import unipotsdam.gf.core.management.user.UserProfile;
 
-import java.sql.Timestamp;
-import java.time.LocalDateTime;
-import java.time.ZoneId;
 import java.util.List;
 
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
 
 /**
  * Created by dehne on 01.06.2018.
@@ -19,16 +17,15 @@ import static org.junit.Assert.*;
 public class ManagementTest {
 
     @Test
-    public void testDelete() throws Exception {
+    public void testDelete() {
 
     }
 
     /**
      *  CREATE a user in the DB using the
-     * @throws Exception
      */
     @Test
-    public void testExists() throws Exception {
+    public void testExists() {
         ManagementImpl management = new ManagementImpl();
         User user = new User("julian", "1234", "from1123123123@stuff.com", true);
         assert !management.exists(user);
@@ -36,10 +33,9 @@ public class ManagementTest {
 
     /**
      *  CREATE a user in the DB using the
-     * @throws Exception
      */
     @Test
-    public void testCreate() throws Exception {
+    public void testCreate() {
         ManagementImpl management = new ManagementImpl();
         User user = new User("julian", "1234", "from@stuff.com", false);
         management.create(user, new UserProfile());
@@ -48,35 +44,49 @@ public class ManagementTest {
 
     /**
      * Test creating a user in the DB
-     * @throws Exception
      */
     @Test
-    public void testCreate1() throws Exception {
+    public void testCreate1() {
         ManagementImpl management = new ManagementImpl();
-        management.create(new Project("Gemainsam Forschen", "1235", "1", "me", "keins"));
+        management.create(new Project("Gemainsam Forschen", "1235", true, "me", "keins"));
 
     }
 
     @Test
-    public void testRegister() throws Exception {
+    public void testRegister() {
         ManagementImpl management = new ManagementImpl();
         User user = new User("julian", "1234", "from@stuff.com", true);
         management.create(user, new UserProfile());
         assert management.exists(user);
 
-        Project project = new Project("Gemainsam Forschen", "1235", "1", "me", "keins");
+        Project project = new Project("Gemainsam Forschen", "1235", true, "me", "keins");
         management.create(project);
         management.register(user, project, null);
     }
 
     @Test
-    public void testGetUsers() throws Exception {
+    public void testUpdateUser() {
+        ManagementImpl management = new ManagementImpl();
+        User user = new User("julian", "1234", "testUpdateUser@stuff.com", true);
+        user.setToken("abc");
+        management.create(user, new UserProfile());
+        assertTrue(management.exists(user));
+
+        user.setStudent(false);
+        management.update(user);
+        assertTrue(management.exists(user));
+        User managementUser = management.getUserByToken(user.getToken());
+        assertEquals(user.getStudent(), managementUser.getStudent());
+    }
+
+    @Test
+    public void testGetUsers() {
         ManagementImpl management = new ManagementImpl();
         User user = new User("julian", "1234", "from@stuff.com", false);
         management.create(user, new UserProfile());
         assert management.exists(user);
 
-        Project project = new Project("Gemainsam Forschen", "1235", "1", "me", "keins");
+        Project project = new Project("Gemainsam Forschen", "1235", true, "me", "keins");
         management.create(project);
         management.register(user, project, null);
 
diff --git a/gemeinsamforschen/src/test/java/unipotsdam/gf/modules/assessment/TestAddAssessment.java b/gemeinsamforschen/src/test/java/unipotsdam/gf/modules/assessment/TestAddAssessment.java
index 78071ead4c147d7f152f09c84f65b3b36e383713..564d54cca5d699c5c93b3e56d64ee0e91bd8057a 100644
--- a/gemeinsamforschen/src/test/java/unipotsdam/gf/modules/assessment/TestAddAssessment.java
+++ b/gemeinsamforschen/src/test/java/unipotsdam/gf/modules/assessment/TestAddAssessment.java
@@ -2,10 +2,10 @@ package unipotsdam.gf.modules.assessment;
 
 import org.junit.Test;
 import unipotsdam.gf.interfaces.IPeerAssessment;
-import unipotsdam.gf.modules.assessment.controller.Assessment;
-import unipotsdam.gf.modules.assessment.controller.FBAssessement;
-import unipotsdam.gf.modules.assessment.controller.Performance;
-import unipotsdam.gf.modules.assessment.controller.StudentIdentifier;
+import unipotsdam.gf.modules.assessment.controller.model.Assessment;
+import unipotsdam.gf.modules.assessment.controller.service.FBAssessement;
+import unipotsdam.gf.modules.assessment.controller.model.Performance;
+import unipotsdam.gf.modules.assessment.controller.model.StudentIdentifier;
 
 public class TestAddAssessment {
 
@@ -24,7 +24,7 @@ public class TestAddAssessment {
         workRating[2] = 4;      //Hilfsbereitschaft oder so
 
         StudentIdentifier student = new StudentIdentifier("Spaß", "Haralf");
-        Performance performance = new Performance(quizAnswers,"so ein toller Typ", workRating);
+        Performance performance = new Performance(student, quizAnswers,"so ein toller Typ", workRating);
         Assessment assessment = new Assessment(student, performance);
         iPeerAssessment.addAssessmentDataToDB(assessment);
     }
diff --git a/gemeinsamforschen/src/test/java/unipotsdam/gf/modules/communication/view/CommunicationViewTest.java b/gemeinsamforschen/src/test/java/unipotsdam/gf/modules/communication/view/CommunicationViewTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..d9bbfc17d3e19b4b5d5a737134c5b90c445a13a8
--- /dev/null
+++ b/gemeinsamforschen/src/test/java/unipotsdam/gf/modules/communication/view/CommunicationViewTest.java
@@ -0,0 +1,128 @@
+package unipotsdam.gf.modules.communication.view;
+
+import org.glassfish.jersey.test.JerseyTest;
+import org.glassfish.jersey.test.util.runner.ConcurrentRunner;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import unipotsdam.gf.config.GFResourceConfig;
+import unipotsdam.gf.core.management.user.User;
+import unipotsdam.gf.modules.communication.model.Message;
+import unipotsdam.gf.modules.communication.model.chat.ChatRoom;
+
+import javax.ws.rs.client.Entity;
+import javax.ws.rs.core.Application;
+import javax.ws.rs.core.Response;
+import java.util.ArrayList;
+import java.util.List;
+
+import static javax.ws.rs.core.Response.Status.BAD_REQUEST;
+import static javax.ws.rs.core.Response.Status.CREATED;
+import static javax.ws.rs.core.Response.Status.NOT_FOUND;
+import static javax.ws.rs.core.Response.Status.OK;
+import static org.hamcrest.Matchers.is;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertThat;
+
+@RunWith(ConcurrentRunner.class)
+public class CommunicationViewTest extends JerseyTest {
+
+    private final static String ENDPOINT = "chat/";
+
+    @Override
+    protected Application configure() {
+        CommunicationView communicationView = new CommunicationView();
+        GFResourceConfig gfResourceConfig = new GFResourceConfig();
+        gfResourceConfig.register(communicationView);
+        return gfResourceConfig;
+    }
+
+    @Test
+    public void getChatRoomInformation() {
+        String path = ENDPOINT + "info/";
+        Response responseOk = target().path(path + "1").request().get();
+        assertThat(responseOk.getStatus(), is(OK.getStatusCode()));
+        assertNotNull(responseOk.readEntity(ChatRoom.class));
+
+        Response responseNotFound = target().path(path).request().get();
+        assertThat(responseNotFound.getStatus(), is(NOT_FOUND.getStatusCode()));
+    }
+
+    @Test
+    public void getChatHistory() {
+        String path = ENDPOINT + "history/";
+        Response responseOk = target().path(path + "1").request().get();
+        assertThat(responseOk.getStatus(), is(OK.getStatusCode()));
+        assertNotNull(responseOk.readEntity(List.class));
+
+        Response responseNotFound = target().path(path).request().get();
+        assertThat(responseNotFound.getStatus(), is(NOT_FOUND.getStatusCode()));
+    }
+
+    @Test
+    public void createChatRoom() {
+        String path = ENDPOINT + "create";
+        Response responseOk = target().path(path).queryParam("name", "test").request().post(null);
+        assertThat(responseOk.getStatus(), is(CREATED.getStatusCode()));
+        assertNotNull(responseOk.readEntity(String.class));
+
+        ArrayList<User> users = new ArrayList<>();
+        users.add(new User("test", "test", "test", true));
+        Response responseOk2 = target().path(path).queryParam("name", "test").request().post(Entity.json(users));
+        assertThat(responseOk2.getStatus(), is(CREATED.getStatusCode()));
+        assertNotNull(responseOk2.readEntity(String.class));
+
+        Response responseBadRequest = target().path(path).request().post(Entity.json(users));
+        assertThat(responseBadRequest.getStatus(), is(BAD_REQUEST.getStatusCode()));
+    }
+
+    @Test
+    public void sendMessage() {
+        String path = ENDPOINT + "send";
+        Message message = new Message();
+        message.setMessage("test");
+        message.setRoomIdOrChannel("1");
+        Response responseOk = target().path(path + "/1").request().post(Entity.json(message));
+        assertThat(responseOk.getStatus(), is(OK.getStatusCode()));
+        assertNotNull(responseOk.readEntity(String.class));
+
+        Response responseBadRequest = target().path(path + "/1").request().post(Entity.json(null));
+        assertThat(responseBadRequest.getStatus(), is(BAD_REQUEST.getStatusCode()));
+    }
+
+    @Test
+    public void addUserToChatRoom() {
+        String fullPath = ENDPOINT + "addUser" + "/1";
+
+        User user = new User("test", "test", "test", true);
+        Response responseOk = target().path(fullPath).request().post(Entity.json(user));
+        assertThat(responseOk.getStatus(), is(OK.getStatusCode()));
+        assertNotNull(responseOk.readEntity(String.class));
+
+        Response responseBadRequest = target().path(fullPath).request().post(Entity.json(null));
+        assertThat(responseBadRequest.getStatus(), is(BAD_REQUEST.getStatusCode()));
+    }
+
+    @Test
+    public void removeUserFromChatRoom() {
+        String fullPath = ENDPOINT + "removeUser" + "/1";
+
+        User user = new User("test2", "test2", "test", true);
+        Response responseOk = target().path(fullPath).request().post(Entity.json(user));
+        assertThat(responseOk.getStatus(), is(OK.getStatusCode()));
+        assertNotNull(responseOk.readEntity(String.class));
+
+        Response responseBadRequest = target().path(fullPath).request().post(Entity.json(null));
+        assertThat(responseBadRequest.getStatus(), is(BAD_REQUEST.getStatusCode()));
+    }
+
+    @Test
+    public void setChatRoomTopic() {
+        String fullPath = ENDPOINT + "setTopic" + "/1";
+        Response responseOk = target().path(fullPath).queryParam("topic", "test").request().post(null);
+        assertThat(responseOk.getStatus(), is(OK.getStatusCode()));
+        assertNotNull(responseOk.readEntity(String.class));
+
+        Response responseBadRequest = target().path(fullPath).request().post(Entity.json(null));
+        assertThat(responseBadRequest.getStatus(), is(BAD_REQUEST.getStatusCode()));
+    }
+}