diff --git a/app/controllers/contents/courseware.php b/app/controllers/contents/courseware.php
index 483f3c7ce1ce95641afc0a6a38c9c845229d776a..e509a6bd1ec53ce049fe923bcf5afee49d2a8c3d 100755
--- a/app/controllers/contents/courseware.php
+++ b/app/controllers/contents/courseware.php
@@ -200,18 +200,32 @@ class Contents_CoursewareController extends AuthenticatedController
 
         $sem_courses  = MyRealmModel::getPreparedCourses($sem_key, $params);
 
-        $this->elements = [];
-
-        foreach ((array) $sem_courses as $sem_course) {
-            $course = reset($sem_course);
-            $element = StructuralElement::findOneBySQL('range_id = ? AND range_type = ?', array($course['seminar_id'], 'course'));
-            if($element) {
-                $element['payload'] = json_decode($element['payload'], true);
-                array_push($this->elements, $element);
+        $this->semesters = [];
+
+        if ($sem_courses) {
+            $i = 0;
+            foreach ($sem_courses as $sem) {
+                $this->semesters[$i]['semester_name'] = array_values($sem)[0]['start_semester'];
+                $this->semesters[$i]['coursewares'] = [];
+                $this->semesters[$i]['empty_courses'] = [];
+
+                foreach ($sem as $cid => $course) {
+                    $element = StructuralElement::getCoursewareCourse($cid);
+                    if($element) {
+                        $element['payload'] = json_decode($element['payload'], true);
+                        array_push($this->semesters[$i]['coursewares'], $element);
+                    } else {
+                        array_push($this->semesters[$i]['empty_courses'], $course);
+                    }
+                }
+                $i++;
             }
+        } else {
+            $semester = Semester::find($sem_key);
+            $this->semesters[0]['semester_name'] = $semester->name;
+            $this->semesters[0]['coursewares'] = [];
+            $this->semesters[0]['empty_courses'] = [];
         }
-
-        $this->empty_courses = empty($sem_courses);
     }
 
 
diff --git a/app/views/contents/courseware/courses_overview.php b/app/views/contents/courseware/courses_overview.php
index 97517fde53eee1633b7aed12c6965c4a0a7cad18..3311fc1815b828089208357002c8ab3587a746ca 100644
--- a/app/views/contents/courseware/courses_overview.php
+++ b/app/views/contents/courseware/courses_overview.php
@@ -1,8 +1,9 @@
-
 <div class="cw-content-projects">
-    <? if(!empty($elements)): ?>
+    <? foreach($semesters as $semester) :?>
+        <h2><?= $semester['semester_name'] ?></h2>
+        <? if (!empty($semester['coursewares'])): ?>
         <ul class="cw-tiles">
-            <? foreach($elements as $element) :?>
+            <? foreach($semester['coursewares'] as $element) :?>
                 <li class="tile <?= htmlReady($element['payload']['color'])?>">
                     <a href="<?= URLHelper::getLink('dispatch.php/course/courseware/?cid='.$element['range_id'].'#/structural_element/'.$element['id']) ?>">
                         <div class="preview-image" style="background-image: url(<?= htmlReady($element->getImageUrl()) ?>)" ></div>
@@ -21,14 +22,12 @@
                 </li>
             <? endforeach; ?>
         </ul>
-    <? endif; ?> 
-    <? if (empty($elements) && !$empty_courses): ?>
-        <?= MessageBox::info(_('Es wurden noch keine Lernunterlagen angelegt.')); ?>
-    <? endif; ?> 
-    <? if ($empty_courses && !$all_semesters): ?>
-        <?= MessageBox::info(_('Es wurden für das gewählte Semester keine Veranstaltungen gefunden.')); ?>
-    <? endif; ?> 
-    <? if ($empty_courses && $all_semesters): ?>
-        <?= MessageBox::info(_('Es wurden keine Veranstaltungen gefunden.')); ?>
-    <? endif; ?> 
-</div>
\ No newline at end of file
+        <? endif; ?>
+        <? if (empty($semester['coursewares']) && !empty($empty_courses)): ?>
+            <?= MessageBox::info(_('Es wurden noch keine Lernunterlagen angelegt.')); ?>
+        <? endif; ?>
+        <? if (empty($semester['coursewares']) && empty($empty_courses)): ?>
+            <?= MessageBox::info(_('Es wurden keine Veranstaltungen gefunden.')); ?>
+        <? endif; ?> 
+    <? endforeach; ?>
+</div>