diff --git a/controllers/api.php b/controllers/api.php
index f0b5286cbb718718485c4d347190b9315a57fd76..3412189bfcc0cf9d4fda60be448b6b81cc263c76 100644
--- a/controllers/api.php
+++ b/controllers/api.php
@@ -86,6 +86,7 @@ class ApiController extends StudipController
                 'type'          => $exercise->type,
                 'title'         => $exercise->title,
                 'template'      => $template->render(),
+                'item_count'    => $exercise->itemCount(),
                 'show_solution' => $template->show_solution
             ];
         }
@@ -127,6 +128,7 @@ class ApiController extends StudipController
             'type'          => $exercise->type,
             'title'         => $exercise->title,
             'template'      => $template->render(),
+            'item_count'    => $exercise->itemCount(),
             'show_solution' => $template->show_solution
         ];
 
diff --git a/css/vips.css b/css/vips.css
index 34c802e6805441af9ba998eb824c487564972bc6..f19b35c14066a11ce3d9aedb240b4aa94df2e2d9 100644
--- a/css/vips.css
+++ b/css/vips.css
@@ -104,7 +104,6 @@ button.vips_file_upload:hover {
 }
 
 .ui-tabs.ui-widget-content {
-    border: 1px solid #c5c7ca;
     border: 1px solid var(--light-gray-color-40, #c5c7ca);
     margin-top: 1.5ex;
     padding: 0;
@@ -113,7 +112,6 @@ button.vips_file_upload:hover {
 .ui-tabs .ui-tabs-nav {
     background: none;
     border: none;
-    border-bottom: 1px solid #c5c7ca;
     border-bottom: 1px solid var(--light-gray-color-40, #c5c7ca);
 }
 
@@ -123,19 +121,16 @@ button.vips_file_upload:hover {
 }
 
 .ui-tabs .ui-tabs-tab:hover {
-    border-bottom: 3px solid #b1b4b8;
     border-bottom: 3px solid var(--dark-gray-color-40, #b1b4b8);
 }
 
 .ui-tabs .ui-tabs-nav li.ui-tabs-active {
     margin-bottom: 0;
     padding-bottom: 0;
-    border-bottom: 3px solid #636971;
     border-bottom: 3px solid var(--light-gray-color-80, #636971);
 }
 
 .ui-tabs .ui-tabs-tab .ui-tabs-anchor {
-    color: #28497c;
     color: var(--base-color, #28497c);
     padding: 5px 15px;
 }
@@ -179,7 +174,6 @@ button.vips_file_upload:hover {
 }
 
 .vips_output {
-    background-color: #f5f6f6;
     background-color: var(--dark-gray-color-5, #f5f6f6);
     max-height: 30em;
     min-height: 1em;
@@ -490,9 +484,7 @@ button.vips_file_upload:hover {
 }
 
 #options-toggle + .caption {
-    background-color: #e7ebf1;
     background-color: var(--fieldset-header, #e7ebf1);
-    color: #28497c;
     color: var(--brand-color-dark, #28497c);
     cursor: pointer;
     font-weight: bold;
@@ -525,7 +517,7 @@ button.vips_file_upload:hover {
 }
 
 #character_picker .block {
-    background-color: #e6e6e6;
+    background-color: var(--fieldset-header, #e7ebf1);
     border-radius: 0.25em;
     display: inline-block;
     margin: 0.25em 0.25em;
@@ -533,7 +525,7 @@ button.vips_file_upload:hover {
 }
 
 #character_picker .block .block_title {
-    background-color: #cfcfcf;
+    background-color: var(--fieldset-border, #d0d7e3);
     border-radius: 0.25em 0 0 0.25em;
     display: inline-block;
     font-weight: bold;
@@ -541,15 +533,13 @@ button.vips_file_upload:hover {
 }
 
 #character_picker .block button {
-    cursor: pointer;
-    background-color: #e6e6e6;
     border: 0;
     border-radius: 0.25em;
+    cursor: pointer;
     padding: 0 0.25em;
 }
 
 #character_picker .block button:hover {
-    background-color: #f5f6f6;
     background-color: var(--dark-gray-color-5, #f5f6f6);
 }
 
@@ -572,16 +562,7 @@ button.vips_file_upload:hover {
 }
 
 .cw-exercise-header {
-    background-color: #e7ebf1;
-    background-color: var(--fieldset-header, #e7ebf1);
-    border: 1px solid #d0d7e3;
-    border: 1px solid var(--fieldset-border, #d0d7e3);
-    border-bottom: none;
-    color: #28497c;
-    color: var(--brand-color-dark, #28497c);
     display: flex;
-    font-weight: bold;
-    padding: 6px 0;
 }
 
 .cw-exercise-header button {
@@ -594,16 +575,13 @@ button.vips_file_upload:hover {
 
 .cw-exercise-header span {
     flex-grow: 1;
-    text-align: center;
 }
 
 .cw-exercise-fieldset header {
-    background-color: #e7ebf1;
     background-color: var(--fieldset-header, #e7ebf1);
-    color: #28497c;
     color: var(--brand-color-dark, #28497c);
     font-weight: 600;
     margin: 14px 0 8px -10px;
-    padding: 8px;
-    width: calc(100% + 4px);
+    padding: 6px 10px;
+    width: 100%;
 }
diff --git a/js/test-block.js b/js/test-block.js
index 689f4380cdff556cdeac4fc262ec41b34abdabd4..252362e370cab0b456f81cd6cb0860c501751fc9 100644
--- a/js/test-block.js
+++ b/js/test-block.js
@@ -12,7 +12,7 @@ const CoursewareTestBlock = {
             @closeEdit="initCurrentData"
         >
             <template #content>
-                <div class="cw-exercise-header" v-if="assignment">
+                <div class="cw-block-title cw-exercise-header" v-if="assignment">
                     <template v-if="exercises.length > 1">
                         <button @click="prevExercise" :title="$gettext('Zurück')">
                             <studip-icon shape="arr_1left" size="20"/>
@@ -33,7 +33,7 @@ const CoursewareTestBlock = {
                         <form class="default" autocomplete="off" :exercise="exercise.id">
                             <fieldset class="cw-exercise-fieldset" v-html="exercise.template" ref="content">
                             </fieldset>
-                            <footer v-show="assignment.reset_allowed || !exercise.show_solution">
+                            <footer v-show="exercise.item_count && (assignment.reset_allowed || !exercise.show_solution)">
                                 <button
                                     v-show="!exercise.show_solution"
                                     class="button accept"
@@ -54,9 +54,8 @@ const CoursewareTestBlock = {
                 </template>
                 <component
                     :is="coursewarePluginComponents.CoursewareCompanionBox"
-                    :msgCompanion="errorMessage || $gettext('Es wurde noch kein Aufgabenblatt ausgewählt.')"
-                    mood="sad"
-                    v-if="assignment === null"
+                    :msgCompanion="errorMessage" mood="sad"
+                    v-if="errorMessage !== null"
                 />
             </template>
             <template v-if="canEdit" #edit>
@@ -90,7 +89,9 @@ const CoursewareTestBlock = {
                     </label>
                 </form>
             </template>
-            <template #info><translate>Informationen zum Testblock</translate></template>
+            <template #info>
+                <translate>Informationen zum Testblock</translate>
+            </template>
         </component>
         <studip-dialog
             v-if="showResetDialog"
@@ -127,6 +128,7 @@ const CoursewareTestBlock = {
                 parent: this.block,
                 relationship: 'container',
             });
+
             return this.$store.dispatch('updateBlockInContainer', {
                 attributes,
                 blockId: this.block.id,
@@ -160,8 +162,10 @@ const CoursewareTestBlock = {
         },
         loadSelectedAssignment() {
             if (this.assignment_id === '') {
-                return false;
+                this.errorMessage = this.$gettext('Es wurde noch kein Aufgabenblatt ausgewählt.');
+                return;
             }
+
             this.assignment = null;
             this.errorMessage = null;
             this.exercises = [];
@@ -181,9 +185,7 @@ const CoursewareTestBlock = {
         reloadExercise(exercise_id) {
             $.get(vips_url('api/exercise/' + this.assignment.id + '/' + exercise_id))
                 .done(response => {
-                    this.exercises = this.exercises.map((exercise) => {
-                        return exercise.id === exercise_id ? response : exercise;
-                    });
+                    this.$set(this.exercises, this.exercise_pos, response);
                     this.$nextTick(() => {
                         this.loadMathjax();
                         vips_post_render(this.$refs.content);
@@ -214,7 +216,6 @@ const CoursewareTestBlock = {
                 if (xhr.status === 422) {
                     info = this.$gettext('Ihre Lösung ist leer und wurde nicht gespeichert.');
                 }
-
                 this.$store.dispatch('companionError', { info: info });
             })
             .done(() => {