diff --git a/src/app/app-root/admin-starter/admin-starter.component.ts b/src/app/app-root/admin-starter/admin-starter.component.ts
index 233469548c53b92071b50d25e306fbe3919c433d..61707d00fed1d3df37b746d17ddb10db6e21ce29 100644
--- a/src/app/app-root/admin-starter/admin-starter.component.ts
+++ b/src/app/app-root/admin-starter/admin-starter.component.ts
@@ -1,11 +1,11 @@
 import {Component, OnDestroy, OnInit} from '@angular/core';
-import {MainDataService} from "../../maindata.service";
-import {Router} from "@angular/router";
-import {AuthAccessKeyType, AuthData, WorkspaceData} from "../../app.interfaces";
-import {from, Subscription} from "rxjs";
-import {concatMap} from "rxjs/operators";
-import {BackendService} from "../../backend.service";
-import {CustomtextService} from "iqb-components";
+import {MainDataService} from '../../maindata.service';
+import {Router} from '@angular/router';
+import {AuthAccessKeyType, AuthData, WorkspaceData} from '../../app.interfaces';
+import {from, Subscription} from 'rxjs';
+import {concatMap} from 'rxjs/operators';
+import {BackendService} from '../../backend.service';
+import {CustomtextService} from 'iqb-components';
 
 
 @Component({
@@ -47,7 +47,7 @@ export class AdminStarterComponent implements OnInit, OnDestroy {
                 this.workspaces = [];
                 this.getWorkspaceDataSubscription = from(authData.access[AuthAccessKeyType.WORKSPACE_ADMIN]).pipe(
                   concatMap(workspaceId => {
-                    return this.bs.getWorkspaceData(workspaceId)
+                    return this.bs.getWorkspaceData(workspaceId);
                   })).subscribe(
                     wsData => this.workspaces.push(wsData),
                   () => this.mds.setSpinnerOff(),
@@ -68,7 +68,7 @@ export class AdminStarterComponent implements OnInit, OnDestroy {
         } else {
           this.mds.setSpinnerOff();
         }
-      })
+      });
     });
   }
 
diff --git a/src/app/app-root/code-input/code-input.component.ts b/src/app/app-root/code-input/code-input.component.ts
index c3db5a06a08c81d6346d26eeb1f02acc1266befb..aa377989d04f9d533bd9f3382e7c4bcc2af6035c 100644
--- a/src/app/app-root/code-input/code-input.component.ts
+++ b/src/app/app-root/code-input/code-input.component.ts
@@ -1,11 +1,11 @@
 import {Component, OnInit, ViewChild} from '@angular/core';
-import {Router} from "@angular/router";
-import {MainDataService} from "../../maindata.service";
-import {FormControl, FormGroup, Validators} from "@angular/forms";
-import {CustomtextService, MessageDialogComponent, MessageDialogData, MessageType} from "iqb-components";
-import {MatDialog} from "@angular/material/dialog";
-import {AuthData} from "../../app.interfaces";
-import {BackendService} from "../../backend.service";
+import {Router} from '@angular/router';
+import {MainDataService} from '../../maindata.service';
+import {FormControl, FormGroup, Validators} from '@angular/forms';
+import {CustomtextService, MessageDialogComponent, MessageDialogData, MessageType} from 'iqb-components';
+import {MatDialog} from '@angular/material/dialog';
+import {AuthData} from '../../app.interfaces';
+import {BackendService} from '../../backend.service';
 
 @Component({
   templateUrl: './code-input.component.html',
@@ -14,7 +14,7 @@ import {BackendService} from "../../backend.service";
     '.mat-card-gray {background-color: lightgray}'
   ]
 })
-export class CodeInputComponent implements OnInit{
+export class CodeInputComponent implements OnInit {
   @ViewChild('codeInputControl') codeInputControl: FormControl;
   problemText = '';
 
@@ -36,7 +36,7 @@ export class CodeInputComponent implements OnInit{
       if (element) {
         element.focus();
       }
-    })
+    });
   }
 
   codeinput() {
@@ -71,7 +71,7 @@ export class CodeInputComponent implements OnInit{
             this.mds.setAuthData(authDataTyped);
             this.router.navigate(['/r']);
           }
-        })
+        });
     }
   }
 
diff --git a/src/app/app-root/login/login.component.ts b/src/app/app-root/login/login.component.ts
index 2c7d22b2c8fcec6f8a55942973c2e47560a50ebf..72d3966271ecb844b42bc156f535ef818f625ed0 100644
--- a/src/app/app-root/login/login.component.ts
+++ b/src/app/app-root/login/login.component.ts
@@ -1,11 +1,11 @@
 import {Component, OnDestroy, OnInit} from '@angular/core';
-import {FormControl, FormGroup, Validators} from "@angular/forms";
-import {MainDataService} from "../../maindata.service";
-import {CustomtextService} from "iqb-components";
-import {ActivatedRoute, Router} from "@angular/router";
-import {Subscription} from "rxjs";
-import {AuthData} from "../../app.interfaces";
-import {BackendService} from "../../backend.service";
+import {FormControl, FormGroup, Validators} from '@angular/forms';
+import {MainDataService} from '../../maindata.service';
+import {CustomtextService} from 'iqb-components';
+import {ActivatedRoute, Router} from '@angular/router';
+import {Subscription} from 'rxjs';
+import {AuthData} from '../../app.interfaces';
+import {BackendService} from '../../backend.service';
 
 @Component({
   templateUrl: './login.component.html',
@@ -16,8 +16,8 @@ import {BackendService} from "../../backend.service";
 })
 
 export class LoginComponent  implements OnInit, OnDestroy {
-  private routingSubscription: Subscription = null;
   static oldLoginName = '';
+  private routingSubscription: Subscription = null;
   returnTo = '';
   problemText = '';
 
@@ -38,7 +38,7 @@ export class LoginComponent  implements OnInit, OnDestroy {
     this.mds.setSpinnerOff();
     this.routingSubscription = this.route.params.subscribe(params => {
       this.returnTo = params['returnTo'];
-    })
+    });
   }
 
   login() {
diff --git a/src/app/app-root/privacy/privacy.component.ts b/src/app/app-root/privacy/privacy.component.ts
index 402ce5f8c11a5df3acfc76293ec6955d3be2d075..509d53266b59d62a2838ca760792505c625d9745 100644
--- a/src/app/app-root/privacy/privacy.component.ts
+++ b/src/app/app-root/privacy/privacy.component.ts
@@ -1,16 +1,14 @@
 import { Component } from '@angular/core';
-import {CustomtextService} from "iqb-components";
+import {CustomtextService} from 'iqb-components';
 
 @Component({
   templateUrl: './privacy.component.html',
   styles: [
-    'mat-card {margin: 10px}' //'; background-color: lightgray}'
+    'mat-card {margin: 10px}'
   ]
 })
 export class PrivacyComponent {
-
   constructor(
     public cts: CustomtextService
   ) { }
-
 }
diff --git a/src/app/app-root/route-dispatcher/route-dispatcher.component.ts b/src/app/app-root/route-dispatcher/route-dispatcher.component.ts
index f9f665ff41e99a08a6dc8d63492fdb4fbba4d3cb..0d5b39af69ebe443fe084d4bdc718769dca6daca 100644
--- a/src/app/app-root/route-dispatcher/route-dispatcher.component.ts
+++ b/src/app/app-root/route-dispatcher/route-dispatcher.component.ts
@@ -1,6 +1,6 @@
-import { Component, OnInit } from '@angular/core';
-import {CustomtextService} from "iqb-components";
-import {Router, RouterState, RouterStateSnapshot} from "@angular/router";
+import { Component } from '@angular/core';
+import {CustomtextService} from 'iqb-components';
+import {Router, RouterState, RouterStateSnapshot} from '@angular/router';
 
 @Component({
   templateUrl: './route-dispatcher.component.html',
@@ -10,7 +10,7 @@ import {Router, RouterState, RouterStateSnapshot} from "@angular/router";
   ]
 })
 
-export class RouteDispatcherComponent implements OnInit {
+export class RouteDispatcherComponent {
   url = '';
 
   constructor(
@@ -21,8 +21,4 @@ export class RouteDispatcherComponent implements OnInit {
     const snapshot: RouterStateSnapshot = state.snapshot;
     this.url = snapshot.url;
   }
-
-  ngOnInit(): void {
-  }
-
 }
diff --git a/src/app/app-root/status-card/status-card.component.ts b/src/app/app-root/status-card/status-card.component.ts
index f045564eb5eeccdb762e57109276e073cabda62d..921c2acbbb1a760f949940c2ee34b5d5f2522491 100644
--- a/src/app/app-root/status-card/status-card.component.ts
+++ b/src/app/app-root/status-card/status-card.component.ts
@@ -1,8 +1,9 @@
 import {Component, Inject, OnInit} from '@angular/core';
-import {MainDataService} from "../../maindata.service";
-import {AuthAccessKeyType, AuthFlagType} from "../../app.interfaces";
+import {MainDataService} from '../../maindata.service';
+import {AuthAccessKeyType, AuthFlagType} from '../../app.interfaces';
 
 @Component({
+  // tslint:disable-next-line:component-selector TODO rename component instead
   selector: 'status-card',
   templateUrl: './status-card.component.html'
 })
@@ -50,7 +51,7 @@ export class StatusCardComponent implements OnInit {
           this.loginAuthority.push('Code-Eingabe erforderlich');
         }
       }
-    })
+    });
   }
 
 }
diff --git a/src/app/app-root/sys-check-starter/sys-check-starter.component.ts b/src/app/app-root/sys-check-starter/sys-check-starter.component.ts
index 733cec2af00f001958b64f22151cb0b68661421f..5807a9449c9f21c0484784cad150d8507506efe7 100644
--- a/src/app/app-root/sys-check-starter/sys-check-starter.component.ts
+++ b/src/app/app-root/sys-check-starter/sys-check-starter.component.ts
@@ -1,9 +1,9 @@
 import {Component, OnInit} from '@angular/core';
-import {BackendService} from "../../backend.service";
-import {Router} from "@angular/router";
-import {MainDataService} from "../../maindata.service";
-import {SysCheckInfo} from "../../app.interfaces";
-import {CustomtextService} from "iqb-components";
+import {BackendService} from '../../backend.service';
+import {Router} from '@angular/router';
+import {MainDataService} from '../../maindata.service';
+import {SysCheckInfo} from '../../app.interfaces';
+import {CustomtextService} from 'iqb-components';
 
 @Component({
   templateUrl: './sys-check-starter.component.html',
@@ -28,12 +28,12 @@ export class SysCheckStarterComponent implements OnInit {
         if (myConfigs) {
           this.checkConfigList = myConfigs;
         } else {
-          this.checkConfigList = []
+          this.checkConfigList = [];
         }
         this.loading = false;
         this.mds.setSpinnerOff();
       });
-    })
+    });
   }
 
   buttonStartCheck(checkInfo: SysCheckInfo) {
diff --git a/src/app/app-root/test-starter/test-starter.component.ts b/src/app/app-root/test-starter/test-starter.component.ts
index d12a2af1fada43e36659cfd211fa3626005d943c..0b63fbccc9761c1fff048ab39f526fb7c1750394 100644
--- a/src/app/app-root/test-starter/test-starter.component.ts
+++ b/src/app/app-root/test-starter/test-starter.component.ts
@@ -1,17 +1,17 @@
-import { Component, OnInit } from '@angular/core';
-import {AuthAccessKeyType, AuthData, BookletData} from "../../app.interfaces";
-import {from, Subscription} from "rxjs";
-import {concatMap} from "rxjs/operators";
-import {Router} from "@angular/router";
-import {BackendService} from "../../backend.service";
-import {MainDataService} from "../../maindata.service";
-import {CustomtextService} from "iqb-components";
+import {Component, OnDestroy, OnInit} from '@angular/core';
+import {AuthAccessKeyType, AuthData, BookletData} from '../../app.interfaces';
+import {from, Subscription} from 'rxjs';
+import {concatMap} from 'rxjs/operators';
+import {Router} from '@angular/router';
+import {BackendService} from '../../backend.service';
+import {MainDataService} from '../../maindata.service';
+import {CustomtextService} from 'iqb-components';
 
 @Component({
   templateUrl: './test-starter.component.html',
   styleUrls: ['./test-starter.component.css']
 })
-export class TestStarterComponent implements OnInit {
+export class TestStarterComponent implements OnInit, OnDestroy {
   booklets: BookletData[] = [];
   private getBookletDataSubscription: Subscription = null;
   public bookletSelectTitle = 'Bitte wählen';
@@ -39,10 +39,10 @@ export class TestStarterComponent implements OnInit {
                 }
                 this.getBookletDataSubscription = from(authData.access[AuthAccessKeyType.TEST]).pipe(
                   concatMap(bookletId => {
-                    return this.bs.getBookletData(bookletId)
+                    return this.bs.getBookletData(bookletId);
                   })).subscribe(
                     bData => {
-                      this.booklets.push(bData)
+                      this.booklets.push(bData);
                     },
                     e => {
                       this.problemText = `Fehler in der Netzwerkverbindung (${e}).`;
@@ -66,7 +66,7 @@ export class TestStarterComponent implements OnInit {
         } else {
           this.mds.setSpinnerOff();
         }
-      })
+      });
     });
   }
 
diff --git a/src/app/app-route-guards.ts b/src/app/app-route-guards.ts
index 91a863809a62914e36adfcaf9300138a125c9598..030b60fbb11f9fc83bb36e57e037c028f4ae1fcb 100644
--- a/src/app/app-route-guards.ts
+++ b/src/app/app-route-guards.ts
@@ -1,9 +1,9 @@
-import {Injectable} from "@angular/core";
-import {ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot} from "@angular/router";
-import {MainDataService} from "./maindata.service";
-import {Observable} from "rxjs";
-import {AuthAccessKeyType, AuthData, AuthFlagType} from "./app.interfaces";
-import {BackendService} from "./backend.service";
+import {Injectable} from '@angular/core';
+import {ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot} from '@angular/router';
+import {MainDataService} from './maindata.service';
+import {Observable} from 'rxjs';
+import {AuthAccessKeyType, AuthData, AuthFlagType} from './app.interfaces';
+import {BackendService} from './backend.service';
 
 @Injectable()
 export class RouteDispatcherActivateGuard implements CanActivate {
@@ -58,20 +58,20 @@ export class DirectLoginActivateGuard implements CanActivate {
     if (!authData) {
       const directLoginName = state.url.substr(1);
       if (directLoginName.length > 0 && directLoginName.indexOf('/') < 0) {
-        this.bs.nameOnlyLogin(directLoginName).subscribe(authData => {
-          if (typeof authData !== 'number') {
-            this.mds.setAuthData(authData as AuthData);
+        this.bs.nameOnlyLogin(directLoginName).subscribe((authDataResponse: AuthData|number) => {
+          if (typeof authDataResponse !== 'number') {
+            this.mds.setAuthData(authDataResponse as AuthData);
             this.router.navigate(['/r']);
-            return false
+            return false;
           } else {
-            return true
+            return true;
           }
-        })
+        });
       } else {
-        return true
+        return true;
       }
     } else {
-      return true
+      return true;
     }
   }
 }
@@ -90,18 +90,18 @@ export class CodeInputComponentActivateGuard implements CanActivate {
     if (authData) {
       if (authData.flags) {
         if (authData.flags.indexOf(AuthFlagType.CODE_REQUIRED) >= 0) {
-          return true
+          return true;
         } else {
           this.router.navigate(['/r']);
-          return false
+          return false;
         }
       } else {
         this.router.navigate(['/r']);
-        return false
+        return false;
       }
     } else {
       this.router.navigate(['/r']);
-      return false
+      return false;
     }
   }
 }
@@ -123,15 +123,15 @@ export class AdminComponentActivateGuard implements CanActivate {
           return true;
         } else {
           this.router.navigate(['/r']);
-          return false
+          return false;
         }
       } else {
         this.router.navigate(['/r']);
-        return false
+        return false;
       }
     } else {
       this.router.navigate(['/r']);
-      return false
+      return false;
     }
   }
 }
@@ -153,15 +153,15 @@ export class AdminOrSuperAdminComponentActivateGuard implements CanActivate {
           return true;
         } else {
           this.router.navigate(['/r']);
-          return false
+          return false;
         }
       } else {
         this.router.navigate(['/r']);
-        return false
+        return false;
       }
     } else {
       this.router.navigate(['/r']);
-      return false
+      return false;
     }
   }
 }
@@ -183,15 +183,15 @@ export class SuperAdminComponentActivateGuard implements CanActivate {
           return true;
         } else {
           this.router.navigate(['/r']);
-          return false
+          return false;
         }
       } else {
         this.router.navigate(['/r']);
-        return false
+        return false;
       }
     } else {
       this.router.navigate(['/r']);
-      return false
+      return false;
     }
   }
 }
@@ -213,15 +213,15 @@ export class TestComponentActivateGuard implements CanActivate {
           return true;
         } else {
           this.router.navigate(['/r']);
-          return false
+          return false;
         }
       } else {
         this.router.navigate(['/r']);
-        return false
+        return false;
       }
     } else {
       this.router.navigate(['/r']);
-      return false
+      return false;
     }
   }
 }
@@ -236,9 +236,7 @@ export class GroupMonitorActivateGuard implements CanActivate {
       private router: Router
   ) {}
 
-  canActivate(next: ActivatedRouteSnapshot, state: RouterStateSnapshot)
-      : boolean {
-
+  canActivate(next: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean {
         const authData = MainDataService.getAuthData();
 
         if (authData) {
@@ -247,15 +245,15 @@ export class GroupMonitorActivateGuard implements CanActivate {
               return true;
             } else {
               this.router.navigate(['/r']);
-              return false
+              return ;
             }
           } else {
             this.router.navigate(['/r']);
-            return false
+            return false;
           }
         } else {
           this.router.navigate(['/r']);
-          return false
+          return false;
         }
   }
 }
diff --git a/src/app/app-routing.module.ts b/src/app/app-routing.module.ts
index e4bd1b4daf80bae37dfa87377d4fee5e54c8b5b7..9d402536eda6641bdba2ffb309965a635a49c0c9 100644
--- a/src/app/app-routing.module.ts
+++ b/src/app/app-routing.module.ts
@@ -1,19 +1,19 @@
 import { NgModule } from '@angular/core';
 import { Routes, RouterModule } from '@angular/router';
-import {AppRootComponent} from "./app-root/app-root.component";
-import {LoginComponent} from "./app-root/login/login.component";
-import {SysCheckStarterComponent} from "./app-root/sys-check-starter/sys-check-starter.component";
-import {AdminStarterComponent} from "./app-root/admin-starter/admin-starter.component";
-import {CodeInputComponent} from "./app-root/code-input/code-input.component";
+import {AppRootComponent} from './app-root/app-root.component';
+import {LoginComponent} from './app-root/login/login.component';
+import {SysCheckStarterComponent} from './app-root/sys-check-starter/sys-check-starter.component';
+import {AdminStarterComponent} from './app-root/admin-starter/admin-starter.component';
+import {CodeInputComponent} from './app-root/code-input/code-input.component';
 import {
   AdminComponentActivateGuard, AdminOrSuperAdminComponentActivateGuard,
   CodeInputComponentActivateGuard,
   DirectLoginActivateGuard, GroupMonitorActivateGuard,
   RouteDispatcherActivateGuard, SuperAdminComponentActivateGuard, TestComponentActivateGuard
 } from './app-route-guards';
-import {TestStarterComponent} from "./app-root/test-starter/test-starter.component";
-import {RouteDispatcherComponent} from "./app-root/route-dispatcher/route-dispatcher.component";
-import {PrivacyComponent} from "./app-root/privacy/privacy.component";
+import {TestStarterComponent} from './app-root/test-starter/test-starter.component';
+import {RouteDispatcherComponent} from './app-root/route-dispatcher/route-dispatcher.component';
+import {PrivacyComponent} from './app-root/privacy/privacy.component';
 import {MonitorStarterComponent} from './app-root/monitor-starter/monitor-starter.component';
 
 
diff --git a/src/app/app.component.ts b/src/app/app.component.ts
index b1d9dc6479123a7491e97f7bd2df004c1ada0b2c..24a1d05dbd23ba64e0c239c6f687e12eca6e41de 100644
--- a/src/app/app.component.ts
+++ b/src/app/app.component.ts
@@ -2,8 +2,8 @@ import { MainDataService } from './maindata.service';
 import {Component, Inject, OnDestroy, OnInit} from '@angular/core';
 import { BackendService } from './backend.service';
 import {CustomtextService} from 'iqb-components';
-import {Subscription} from "rxjs";
-import {AppError} from "./app.interfaces";
+import {Subscription} from 'rxjs';
+import {AppError} from './app.interfaces';
 
 @Component({
   selector: 'tc-root',
@@ -88,9 +88,9 @@ export class AppComponent implements OnInit, OnDestroy {
           this.mds.isApiValid = AppComponent.isValidVersion(this.expectedApiVersion, sc.version);
           if (!this.mds.isApiValid) {
             this.mds.appError$.next({
-              label: "Server-Problem: API-Version ungültig",
-              description: "erwartet: " + this.expectedApiVersion + ", gefunden: " + sc.version,
-              category: "FATAL"
+              label: 'Server-Problem: API-Version ungültig',
+              description: 'erwartet: ' + this.expectedApiVersion + ', gefunden: ' + sc.version,
+              category: 'FATAL'
             });
           }
           if (sc.mainLogo) {
diff --git a/src/app/app.interceptor.ts b/src/app/app.interceptor.ts
index d254fe78ad0caa548d72bc37ec21c043c7a81380..a97d012045d2290abc4536c13e301e3c7da5220b 100644
--- a/src/app/app.interceptor.ts
+++ b/src/app/app.interceptor.ts
@@ -5,9 +5,9 @@ import {
   HttpHandler, HttpEvent, HttpErrorResponse
 } from '@angular/common/http';
 import {Observable, throwError} from 'rxjs';
-import {catchError} from "rxjs/operators";
-import {Router, RouterState, RouterStateSnapshot} from "@angular/router";
-import {ApiError} from "./app.interfaces";
+import {catchError} from 'rxjs/operators';
+import {Router, RouterState, RouterStateSnapshot} from '@angular/router';
+import {ApiError} from './app.interfaces';
 
 @Injectable()
 export class AuthInterceptor implements HttpInterceptor {
@@ -35,17 +35,17 @@ export class AuthInterceptor implements HttpInterceptor {
 
       return next.handle(requestA).pipe(
         catchError(e => {
-          let apiError = new ApiError(999);
+          const apiError = new ApiError(999);
           if (e instanceof HttpErrorResponse) { // TODO is the opposite case even possible?
             const httpError = e as HttpErrorResponse;
             apiError.code = httpError.status;
-            apiError.info = httpError.message + " // " + httpError.error;
+            apiError.info = httpError.message + ' // ' + httpError.error;
             if (httpError.error instanceof ErrorEvent) {
               this.mds.appError$.next({
                 label: 'Fehler in der Netzwerkverbindung',
                 description: httpError.message,
-                category: "PROBLEM"
-              })
+                category: 'PROBLEM'
+              });
             } else {
               let ignoreError = false;
               let goToLoginPage = false;
@@ -99,7 +99,7 @@ export class AuthInterceptor implements HttpInterceptor {
                   this.mds.appError$.next({
                     label: label,
                     description: httpError.message,
-                    category: "PROBLEM"
+                    category: 'PROBLEM'
                   });
                 }
               }
@@ -108,14 +108,14 @@ export class AuthInterceptor implements HttpInterceptor {
 
           return throwError(apiError);
         })
-      )
+      );
     } else {
       this.mds.appError$.next({
-        label: "Server-Problem: API-Version ungültig",
-        description: "Keine weiteren Server-Aufrufe erlaubt",
-        category: "FATAL"
+        label: 'Server-Problem: API-Version ungültig',
+        description: 'Keine weiteren Server-Aufrufe erlaubt',
+        category: 'FATAL'
       });
-      return throwError(new ApiError(500, "API-Version ungültig"));
+      return throwError(new ApiError(500, 'API-Version ungültig'));
     }
   }
 }
diff --git a/src/app/app.interfaces.ts b/src/app/app.interfaces.ts
index 33cbcd146db3544cc9ffcc01dec90db3c15a356c..b5a2dc82ced88eaf9e9fa6e6e00307d563c84a55 100644
--- a/src/app/app.interfaces.ts
+++ b/src/app/app.interfaces.ts
@@ -1,15 +1,15 @@
 export enum AuthFlagType {
-  CODE_REQUIRED = "codeRequired",
-  PENDING = "pending",
-  EXPIRED = "expired"
+  CODE_REQUIRED = 'codeRequired',
+  PENDING = 'pending',
+  EXPIRED = 'expired'
 }
 
 export enum AuthAccessKeyType {
-  WORKSPACE_ADMIN = "workspaceAdmin",
-  SUPER_ADMIN = "superAdmin",
-  TEST = "test",
-  WORKSPACE_MONITOR = "workspaceMonitor",
-  TEST_GROUP_MONITOR = "testGroupMonitor"
+  WORKSPACE_ADMIN = 'workspaceAdmin',
+  SUPER_ADMIN = 'superAdmin',
+  TEST = 'test',
+  WORKSPACE_MONITOR = 'workspaceMonitor',
+  TEST_GROUP_MONITOR = 'testGroupMonitor'
 }
 
 export interface AccessType {
@@ -27,7 +27,7 @@ export interface AuthData {
 export interface WorkspaceData {
   id: string;
   name: string;
-  role: "RW" | "RO" | "n.d.";
+  role: 'RW' | 'RO' | 'n.d.';
 }
 
 export interface AccessObject {
@@ -50,7 +50,7 @@ export interface KeyValuePairs {
 export interface AppError {
   label: string;
   description: string;
-  category: 'WARNING' | 'FATAL' | 'PROBLEM'
+  category: 'WARNING' | 'FATAL' | 'PROBLEM';
 }
 
 export class ApiError {
@@ -58,7 +58,7 @@ export class ApiError {
   info: string;
   constructor(code: number, info = '') {
     this.code = code;
-    this.info = info
+    this.info = info;
   }
 }
 
diff --git a/src/app/app.module.ts b/src/app/app.module.ts
index 23426f93d82cfb56011ef899d570c94dd8456642..0151cf450336eaeda27cbb7f45ff07afcaa1ceda 100644
--- a/src/app/app.module.ts
+++ b/src/app/app.module.ts
@@ -11,22 +11,22 @@ import { LocationStrategy, HashLocationStrategy } from '@angular/common';
 import { FlexLayoutModule } from '@angular/flex-layout';
 import {AuthInterceptor} from './app.interceptor';
 import { IqbComponentsModule } from 'iqb-components';
-import {MatButtonModule} from "@angular/material/button";
-import {MatCardModule} from "@angular/material/card";
-import {MatCheckboxModule} from "@angular/material/checkbox";
+import {MatButtonModule} from '@angular/material/button';
+import {MatCardModule} from '@angular/material/card';
+import {MatCheckboxModule} from '@angular/material/checkbox';
 import {MatDialog, MatDialogModule} from '@angular/material/dialog';
-import {MatFormFieldModule} from "@angular/material/form-field";
-import {MatIconModule} from "@angular/material/icon";
-import {MatInputModule} from "@angular/material/input";
-import {MatMenuModule} from "@angular/material/menu";
-import {MatProgressBarModule} from "@angular/material/progress-bar";
-import {MatProgressSpinnerModule} from "@angular/material/progress-spinner";
-import {MatRadioModule} from "@angular/material/radio";
-import {MatTabsModule} from "@angular/material/tabs";
-import {MatToolbarModule} from "@angular/material/toolbar";
-import {MatTooltipModule} from "@angular/material/tooltip";
+import {MatFormFieldModule} from '@angular/material/form-field';
+import {MatIconModule} from '@angular/material/icon';
+import {MatInputModule} from '@angular/material/input';
+import {MatMenuModule} from '@angular/material/menu';
+import {MatProgressBarModule} from '@angular/material/progress-bar';
+import {MatProgressSpinnerModule} from '@angular/material/progress-spinner';
+import {MatRadioModule} from '@angular/material/radio';
+import {MatTabsModule} from '@angular/material/tabs';
+import {MatToolbarModule} from '@angular/material/toolbar';
+import {MatTooltipModule} from '@angular/material/tooltip';
 import {MatBadgeModule} from '@angular/material/badge';
-import {RouterModule} from "@angular/router";
+import {RouterModule} from '@angular/router';
 import { AppRootComponent } from './app-root/app-root.component';
 import { SysCheckStarterComponent } from './app-root/sys-check-starter/sys-check-starter.component';
 import { LoginComponent } from './app-root/login/login.component';
diff --git a/src/app/backend.service.ts b/src/app/backend.service.ts
index 9c8e1ddc80fdd154036292b0ac58e942773694ca..81115199fc438436385422fc4ac27c8068d455fd 100644
--- a/src/app/backend.service.ts
+++ b/src/app/backend.service.ts
@@ -1,4 +1,3 @@
-
 import { Injectable, Inject } from '@angular/core';
 import {HttpClient} from '@angular/common/http';
 import {Observable, of} from 'rxjs';
@@ -9,9 +8,9 @@ import {
     WorkspaceData,
     BookletData, ApiError, AccessObject
 } from './app.interfaces';
-import {SysConfig} from "./config/app.config";
+import {SysConfig} from './config/app.config';
+
 
-// ============================================================================
 @Injectable({
   providedIn: 'root'
 })
@@ -30,7 +29,7 @@ export class BackendService {
         .pipe(
           catchError((err: ApiError) => {
             console.warn(`login Api-Error: ${err.code} ${err.info} `);
-            return of(err.code)
+            return of(err.code);
           }),
           switchMap(authData => {
             if (typeof authData === 'number') {
@@ -58,7 +57,7 @@ export class BackendService {
       .pipe(
         catchError((err: ApiError) => {
           console.warn(`nameOnlyLogin Api-Error: ${err.code} ${err.info} `);
-          return of(err.code)
+          return of(err.code);
         })
       );
   }
@@ -69,7 +68,7 @@ export class BackendService {
       .pipe(
         catchError((err: ApiError) => {
           console.warn(`codeLogin Api-Error: ${err.code} ${err.info} `);
-          return of(err.code)
+          return of(err.code);
         })
       );
   }
@@ -82,28 +81,29 @@ export class BackendService {
         return of(<WorkspaceData>{
           id: workspaceId,
           name: workspaceId,
-          role: "n.d."
-        })
+          role: 'n.d.'
+        });
       }));
   }
 
-    getGroupData(groupName: string): Observable<AccessObject> {
-
-        interface NameAndLabel { // TODO find consistent terminology. in XSD they are called name & label and likewise (mostly) in newer BE-versions
-            name: string;
-            label: string;
-        }
-
-        return this.http
-            .get<NameAndLabel>(this.serverUrl + 'monitor/group/' + groupName)
-            .pipe(map((r: NameAndLabel): AccessObject => ({id: r.name, name: r.label})))
-            .pipe(catchError(() => {
-                console.warn('get group data failed for ' + groupName);
-                return of(<AccessObject>{
-                    id: groupName,
-                    name: groupName,
-                })
-            }));
+  getGroupData(groupName: string): Observable<AccessObject> {
+
+    // TODO find consistent terminology. in XSD they are called name & label and likewise (mostly) in newer BE-versions
+    interface NameAndLabel {
+        name: string;
+        label: string;
+    }
+
+    return this.http
+        .get<NameAndLabel>(this.serverUrl + 'monitor/group/' + groupName)
+        .pipe(map((r: NameAndLabel): AccessObject => ({id: r.name, name: r.label})))
+        .pipe(catchError(() => {
+            console.warn('get group data failed for ' + groupName);
+            return of(<AccessObject>{
+                id: groupName,
+                name: groupName,
+            });
+        }));
     }
 
   getSessionData(): Observable<AuthData | number> {
@@ -111,7 +111,7 @@ export class BackendService {
       .get<AuthData>(this.serverUrl + 'session')
       .pipe(
         catchError((err: ApiError) => of(err.code))
-      )
+      );
   }
 
   getBookletData(bookletId: string): Observable<BookletData> {
@@ -120,7 +120,7 @@ export class BackendService {
       .pipe(
         map(bData => {
           bData.id = bookletId;
-          return bData
+          return bData;
         }),
         catchError(() => {
         console.warn('get booklet data failed for ' + bookletId);
@@ -129,7 +129,7 @@ export class BackendService {
           label: bookletId,
           locked: true,
           running: false
-        })
+        });
       }));
   }
 
@@ -145,7 +145,7 @@ export class BackendService {
   getSysConfig(): Observable<SysConfig> {
     return this.http
       .get<SysConfig>(this.serverUrl + `system/config`)
-      .pipe(catchError(() => of(null)))
+      .pipe(catchError(() => of(null)));
   }
 
   getSysCheckInfo(): Observable<SysCheckInfo[]> {
diff --git a/src/app/maindata.service.ts b/src/app/maindata.service.ts
index a6cc508612d18ee4b588f83ddef4b152c64b736f..c90a97e9214c42d19055466bc663afbfeadb1a65 100644
--- a/src/app/maindata.service.ts
+++ b/src/app/maindata.service.ts
@@ -6,7 +6,7 @@ import {
   AuthData, KeyValuePairs
 } from './app.interfaces';
 import {CustomtextService} from 'iqb-components';
-import {AppConfig} from "./config/app.config";
+import {AppConfig} from './config/app.config';
 
 const localStorageAuthDataKey = 'iqb-tc-a';
 const localStorageTestConfigKey = 'iqb-tc-c';
@@ -38,10 +38,9 @@ export class MainDataService {
       if (storageEntry.length > 0) {
         try {
           myReturn = JSON.parse(storageEntry as string);
-        }
-        catch (e) {
-          console.warn("corrupt localStorage authData entry");
-          myReturn = null
+        } catch (e) {
+          console.warn('corrupt localStorage authData entry');
+          myReturn = null;
         }
       }
     }
@@ -62,10 +61,9 @@ export class MainDataService {
       if (storageEntry.length > 0) {
         try {
           myReturn = JSON.parse(storageEntry as string);
-        }
-        catch (e) {
-          console.warn("corrupt localStorage testConfig entry");
-          myReturn = null
+        } catch (e) {
+          console.warn('corrupt localStorage testConfig entry');
+          myReturn = null;
         }
       }
     }
@@ -80,11 +78,11 @@ export class MainDataService {
   }
 
   setSpinnerOn() {
-    this.isSpinnerOn$.next(true)
+    this.isSpinnerOn$.next(true);
   }
 
   setSpinnerOff() {
-    this.isSpinnerOn$.next(false)
+    this.isSpinnerOn$.next(false);
   }
 
   setAuthData(authData: AuthData = null) {
diff --git a/src/app/superadmin/backend.service.spec.ts b/src/app/superadmin/backend.service.spec.ts
index ffdc1397ca5ced3a08516d7183bbc820c1001627..4f08e463495ffd25801192beb147079f598435bb 100644
--- a/src/app/superadmin/backend.service.spec.ts
+++ b/src/app/superadmin/backend.service.spec.ts
@@ -1,7 +1,7 @@
 import { TestBed, inject } from '@angular/core/testing';
 
 import { BackendService } from './backend.service';
-import {HttpClientModule} from "@angular/common/http";
+import {HttpClientModule} from '@angular/common/http';
 
 
 describe('HttpClient testing', () => {
diff --git a/src/app/superadmin/backend.service.ts b/src/app/superadmin/backend.service.ts
index 273b271cc11f125427a0998901c949c0368f7db1..ad8092436cc45b362d42c61d34034d43dad17dcc 100644
--- a/src/app/superadmin/backend.service.ts
+++ b/src/app/superadmin/backend.service.ts
@@ -2,8 +2,8 @@ import { Injectable, Inject } from '@angular/core';
 import { HttpClient } from '@angular/common/http';
 import { Observable, of } from 'rxjs';
 import {catchError, map} from 'rxjs/operators';
-import {IdAndName, IdLabelSelectedData, IdRoleData, UserData} from "./superadmin.interfaces";
-import {ApiError} from "../app.interfaces";
+import {IdAndName, IdLabelSelectedData, IdRoleData, UserData} from './superadmin.interfaces';
+import {ApiError} from '../app.interfaces';
 
 
 @Injectable({
@@ -22,18 +22,18 @@ export class BackendService {
       .get<UserData[]>(this.serverUrl + 'users')
       .pipe(catchError((err: ApiError) => {
         console.warn(`getUsers Api-Error: ${err.code} ${err.info} `);
-        return []
+        return [];
       }));
   }
 
   addUser(name: string, password: string): Observable<Boolean> {
     return this.http
-      .put<Boolean>(this.serverUrl + 'user', {n: name, p: password})
+      .put<Boolean>(this.serverUrl + 'user', {n: name, p: password});
   }
 
   changePassword(userId: number, password: string): Observable<Boolean> {
     return this.http
-      .patch<Boolean>(this.serverUrl + `user/${userId}/password`, {p: password})
+      .patch<Boolean>(this.serverUrl + `user/${userId}/password`, {p: password});
   }
 
   setSuperUserStatus(userId: number, changeToSuperUser: boolean, password: string): Observable<number> {
@@ -43,7 +43,7 @@ export class BackendService {
         map(() => 0),
         catchError((err: ApiError) => {
           console.warn(`setSuperUserStatus Api-Error: ${err.code} ${err.info} `);
-          return of(err.code)
+          return of(err.code);
       }));
   }
 
@@ -53,7 +53,7 @@ export class BackendService {
       .request<boolean>('delete', this.serverUrl + 'users', {body: {u: users}})
       .pipe(catchError((err: ApiError) => {
         console.warn(`deleteUsers Api-Error: ${err.code} ${err.info} `);
-        return of(false)
+        return of(false);
       }));
   }
 
@@ -62,7 +62,7 @@ export class BackendService {
       .get<IdLabelSelectedData[]>(this.serverUrl + `user/${userId}/workspaces`)
       .pipe(catchError((err: ApiError) => {
         console.warn(`getWorkspacesByUser Api-Error: ${err.code} ${err.info} `);
-        return []
+        return [];
       }));
   }
 
@@ -71,7 +71,7 @@ export class BackendService {
       .patch<Boolean>(this.serverUrl + `user/${userId}/workspaces`, {ws: accessTo})
       .pipe(catchError((err: ApiError) => {
         console.warn(`setWorkspacesByUser Api-Error: ${err.code} ${err.info} `);
-        return of(false)
+        return of(false);
       }));
   }
 
@@ -80,7 +80,7 @@ export class BackendService {
       .put<Boolean>(this.serverUrl + 'workspace', {name: name})
       .pipe(catchError((err: ApiError) => {
         console.warn(`addWorkspace Api-Error: ${err.code} ${err.info} `);
-        return of(false)
+        return of(false);
       }));
   }
 
@@ -89,7 +89,7 @@ export class BackendService {
       .patch<Boolean>(this.serverUrl + `workspace/${workspaceId}`, {name: wsName})
       .pipe(catchError((err: ApiError) => {
         console.warn(`renameWorkspace Api-Error: ${err.code} ${err.info} `);
-        return of(false)
+        return of(false);
       }));
   }
 
@@ -98,7 +98,7 @@ export class BackendService {
       .request<Boolean>('delete', this.serverUrl + 'workspaces', {body: {ws: workspaces}})
       .pipe(catchError((err: ApiError) => {
         console.warn(`deleteWorkspaces Api-Error: ${err.code} ${err.info} `);
-        return of(false)
+        return of(false);
       }));
   }
 
@@ -107,7 +107,7 @@ export class BackendService {
       .get<IdRoleData[]>(this.serverUrl + `workspace/${workspaceId}/users`)
       .pipe(catchError((err: ApiError) => {
         console.warn(`getUsersByWorkspace Api-Error: ${err.code} ${err.info} `);
-        return []
+        return [];
       }));
   }
 
@@ -116,7 +116,7 @@ export class BackendService {
       .patch<Boolean>(this.serverUrl + `workspace/${workspaceId}/users`, {u: accessing})
       .pipe(catchError((err: ApiError) => {
         console.warn(`setUsersByWorkspace Api-Error: ${err.code} ${err.info} `);
-        return of(false)
+        return of(false);
       }));
   }
 
@@ -125,7 +125,7 @@ export class BackendService {
       .get<IdAndName[]>(this.serverUrl + 'workspaces')
       .pipe(catchError((err: ApiError) => {
         console.warn(`getWorkspaces Api-Error: ${err.code} ${err.info} `);
-        return []
+        return [];
       }));
   }
 }
diff --git a/src/app/superadmin/superadmin-password-request/superadmin-password-request.component.spec.ts b/src/app/superadmin/superadmin-password-request/superadmin-password-request.component.spec.ts
index adb6f10e0aa2e2c661a37636415f556141f5bd65..056be171b097f6dcae49fb9de0a6bceafdd551ef 100644
--- a/src/app/superadmin/superadmin-password-request/superadmin-password-request.component.spec.ts
+++ b/src/app/superadmin/superadmin-password-request/superadmin-password-request.component.spec.ts
@@ -1,11 +1,11 @@
 import { async, ComponentFixture, TestBed } from '@angular/core/testing';
 
 import { SuperadminPasswordRequestComponent } from './superadmin-password-request.component';
-import {MAT_DIALOG_DATA, MatDialog, MatDialogModule} from "@angular/material/dialog";
-import {ReactiveFormsModule} from "@angular/forms";
-import {MatInputModule} from "@angular/material/input";
-import {MatFormFieldModule} from "@angular/material/form-field";
-import {NoopAnimationsModule} from "@angular/platform-browser/animations";
+import {MAT_DIALOG_DATA, MatDialog, MatDialogModule} from '@angular/material/dialog';
+import {ReactiveFormsModule} from '@angular/forms';
+import {MatInputModule} from '@angular/material/input';
+import {MatFormFieldModule} from '@angular/material/form-field';
+import {NoopAnimationsModule} from '@angular/platform-browser/animations';
 
 describe('SuperadminPasswordRequestComponent', () => {
   let component: SuperadminPasswordRequestComponent;
diff --git a/src/app/superadmin/superadmin-routing.module.ts b/src/app/superadmin/superadmin-routing.module.ts
index edbabde86edf28d79a64465db97d6530510f884c..2ff943e30f03365ff8719a5c8752321b1ddddbc7 100644
--- a/src/app/superadmin/superadmin-routing.module.ts
+++ b/src/app/superadmin/superadmin-routing.module.ts
@@ -1,11 +1,9 @@
 import { NgModule } from '@angular/core';
 import { Routes, RouterModule } from '@angular/router';
-
 import { WorkspacesComponent } from './workspaces/workspaces.component';
 import { UsersComponent } from './users/users.component';
 import { SuperadminComponent } from './superadmin.component';
 
-
 const routes: Routes = [
   {
     path: '',
diff --git a/src/app/superadmin/superadmin.component.ts b/src/app/superadmin/superadmin.component.ts
index b4d9118a64a6b18e0cbe2f7d6844214043909c53..eed6fb2f4d5caf058a560bfe0e88718de8024e9c 100644
--- a/src/app/superadmin/superadmin.component.ts
+++ b/src/app/superadmin/superadmin.component.ts
@@ -1,8 +1,6 @@
 import { Component } from '@angular/core';
 import { MainDataService } from '../maindata.service';
 
-
-
 @Component({
   templateUrl: './superadmin.component.html',
   styleUrls: ['./superadmin.component.css']
diff --git a/src/app/superadmin/superadmin.module.ts b/src/app/superadmin/superadmin.module.ts
index 20807dca732e1e44f60196ac4c475d7fd985b368..be90fefb40e80abc9ca6f8a1ae22d36b88ce1bae 100644
--- a/src/app/superadmin/superadmin.module.ts
+++ b/src/app/superadmin/superadmin.module.ts
@@ -3,32 +3,32 @@ import { CommonModule } from '@angular/common';
 
 import { SuperadminRoutingModule } from './superadmin-routing.module';
 import { SuperadminComponent } from './superadmin.component';
-import { UsersComponent } from "./users/users.component";
-import { WorkspacesComponent } from "./workspaces/workspaces.component";
+import { UsersComponent } from './users/users.component';
+import { WorkspacesComponent } from './workspaces/workspaces.component';
 import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
 import { MatIconModule } from '@angular/material/icon';
 import { MatTableModule } from '@angular/material/table';
 import { MatCheckboxModule } from '@angular/material/checkbox';
-import {MatTabsModule} from "@angular/material/tabs";
-import {MatSelectModule} from "@angular/material/select";
-import {MatSortModule} from "@angular/material/sort";
-import {MatCardModule} from "@angular/material/card";
-import {MatExpansionModule} from "@angular/material/expansion";
-import {ReactiveFormsModule} from "@angular/forms";
-import {MatDialogModule} from "@angular/material/dialog";
-import {MatButtonModule} from "@angular/material/button";
-import {MatTooltipModule} from "@angular/material/tooltip";
-import {MatFormFieldModule} from "@angular/material/form-field";
-import {MatInputModule} from "@angular/material/input";
-import {MatToolbarModule} from "@angular/material/toolbar";
-import {MatSnackBarModule} from "@angular/material/snack-bar";
-import {MatGridListModule} from "@angular/material/grid-list";
-import {FlexLayoutModule} from "@angular/flex-layout";
-import {BackendService} from "./backend.service";
-import {NewpasswordComponent} from "./users/newpassword/newpassword.component";
-import {NewuserComponent} from "./users/newuser/newuser.component";
-import {NewworkspaceComponent} from "./workspaces/newworkspace/newworkspace.component";
-import {EditworkspaceComponent} from "./workspaces/editworkspace/editworkspace.component";
+import {MatTabsModule} from '@angular/material/tabs';
+import {MatSelectModule} from '@angular/material/select';
+import {MatSortModule} from '@angular/material/sort';
+import {MatCardModule} from '@angular/material/card';
+import {MatExpansionModule} from '@angular/material/expansion';
+import {ReactiveFormsModule} from '@angular/forms';
+import {MatDialogModule} from '@angular/material/dialog';
+import {MatButtonModule} from '@angular/material/button';
+import {MatTooltipModule} from '@angular/material/tooltip';
+import {MatFormFieldModule} from '@angular/material/form-field';
+import {MatInputModule} from '@angular/material/input';
+import {MatToolbarModule} from '@angular/material/toolbar';
+import {MatSnackBarModule} from '@angular/material/snack-bar';
+import {MatGridListModule} from '@angular/material/grid-list';
+import {FlexLayoutModule} from '@angular/flex-layout';
+import {BackendService} from './backend.service';
+import {NewpasswordComponent} from './users/newpassword/newpassword.component';
+import {NewuserComponent} from './users/newuser/newuser.component';
+import {NewworkspaceComponent} from './workspaces/newworkspace/newworkspace.component';
+import {EditworkspaceComponent} from './workspaces/editworkspace/editworkspace.component';
 import { SuperadminPasswordRequestComponent } from './superadmin-password-request/superadmin-password-request.component';
 
 
diff --git a/src/app/superadmin/users/newpassword/newpassword.component.spec.ts b/src/app/superadmin/users/newpassword/newpassword.component.spec.ts
index 9e7ddf443e512b929c57abfce9e45b156147bef6..649af73aa5d920bbbce9e7d3f24f8ea3219ad1da 100644
--- a/src/app/superadmin/users/newpassword/newpassword.component.spec.ts
+++ b/src/app/superadmin/users/newpassword/newpassword.component.spec.ts
@@ -1,11 +1,11 @@
 import { async, ComponentFixture, TestBed } from '@angular/core/testing';
 
 import { NewpasswordComponent } from './newpassword.component';
-import {ReactiveFormsModule} from "@angular/forms";
-import {MAT_DIALOG_DATA, MatDialog, MatDialogModule} from "@angular/material/dialog";
-import {MatInputModule} from "@angular/material/input";
-import {MatFormFieldModule} from "@angular/material/form-field";
-import {NoopAnimationsModule} from "@angular/platform-browser/animations";
+import {ReactiveFormsModule} from '@angular/forms';
+import {MAT_DIALOG_DATA, MatDialog, MatDialogModule} from '@angular/material/dialog';
+import {MatInputModule} from '@angular/material/input';
+import {MatFormFieldModule} from '@angular/material/form-field';
+import {NoopAnimationsModule} from '@angular/platform-browser/animations';
 
 describe('NewpasswordComponent', () => {
   let component: NewpasswordComponent;
diff --git a/src/app/superadmin/users/newuser/newuser.component.spec.ts b/src/app/superadmin/users/newuser/newuser.component.spec.ts
index 75c49da6a6323a759819d5bf932c793c5ebe8e9a..f03554101e367f4d5d3f4f78a90b4c1a43eae3db 100644
--- a/src/app/superadmin/users/newuser/newuser.component.spec.ts
+++ b/src/app/superadmin/users/newuser/newuser.component.spec.ts
@@ -1,12 +1,12 @@
 import { async, ComponentFixture, TestBed } from '@angular/core/testing';
 
 import { NewuserComponent } from './newuser.component';
-import {ReactiveFormsModule} from "@angular/forms";
-import {MatDialog, MatDialogModule} from "@angular/material/dialog";
-import {MatInputModule} from "@angular/material/input";
-import {MatFormFieldModule} from "@angular/material/form-field";
-import {MatIconModule} from "@angular/material/icon";
-import {NoopAnimationsModule} from "@angular/platform-browser/animations";
+import {ReactiveFormsModule} from '@angular/forms';
+import {MatDialog, MatDialogModule} from '@angular/material/dialog';
+import {MatInputModule} from '@angular/material/input';
+import {MatFormFieldModule} from '@angular/material/form-field';
+import {MatIconModule} from '@angular/material/icon';
+import {NoopAnimationsModule} from '@angular/platform-browser/animations';
 
 describe('NewuserComponent', () => {
   let component: NewuserComponent;
diff --git a/src/app/superadmin/users/users.component.ts b/src/app/superadmin/users/users.component.ts
index 66d45efa9384bd747c4cdaa35ec37a581e993cf7..6d36db3606afc00618ee90d2a73249c0618503b9 100644
--- a/src/app/superadmin/users/users.component.ts
+++ b/src/app/superadmin/users/users.component.ts
@@ -15,11 +15,11 @@ import {
   MessageDialogData, MessageType
 } from 'iqb-components';
 import { MainDataService } from 'src/app/maindata.service';
-import {IdRoleData, UserData} from "../superadmin.interfaces";
-import {SuperadminPasswordRequestComponent} from "../superadmin-password-request/superadmin-password-request.component";
-import {catchError} from "rxjs/operators";
-import {ApiError} from "../../app.interfaces";
-import {of} from "rxjs";
+import {IdRoleData, UserData} from '../superadmin.interfaces';
+import {SuperadminPasswordRequestComponent} from '../superadmin-password-request/superadmin-password-request.component';
+import {catchError} from 'rxjs/operators';
+import {ApiError} from '../../app.interfaces';
+import {of} from 'rxjs';
 
 
 @Component({
@@ -29,12 +29,12 @@ import {of} from "rxjs";
 export class UsersComponent implements OnInit {
   public objectsDatasource: MatTableDataSource<UserData>;
   public displayedColumns = ['selectCheckbox', 'name'];
-  private tableselectionCheckbox = new SelectionModel<UserData>(true, []);
-  private tableselectionRow = new SelectionModel<UserData>(false, []);
+  public tableselectionCheckbox = new SelectionModel<UserData>(true, []);
+  public tableselectionRow = new SelectionModel<UserData>(false, []);
   public selectedUser = -1;
-  private selectedUserName = '';
+  public selectedUserName = '';
 
-  private pendingWorkspaceChanges = false;
+  public pendingWorkspaceChanges = false;
   public WorkspacelistDatasource: MatTableDataSource<IdRoleData>;
   public displayedWorkspaceColumns = ['selectCheckbox', 'label'];
 
@@ -54,7 +54,7 @@ export class UsersComponent implements OnInit {
       r => {
         if (r.added.length > 0) {
           this.selectedUser = r.added[0].id;
-          this.selectedUserName = r.added[0].name
+          this.selectedUserName = r.added[0].name;
         } else {
           this.selectedUser = -1;
           this.selectedUserName = '';
@@ -67,10 +67,9 @@ export class UsersComponent implements OnInit {
     setTimeout(() => {
       this.mds.setSpinnerOn();
       this.updateObjectList();
-    })
+    });
   }
 
-  // ***********************************************************************************
   addObject() {
     const dialogRef = this.newuserDialog.open(NewuserComponent, {
       width: '600px'
@@ -84,7 +83,7 @@ export class UsersComponent implements OnInit {
               (<FormGroup>result).get('pw').value)
             .pipe(catchError((err: ApiError) => {
               this.snackBar.open(`Konnte Nutzer nicht hinzufügen: ${err.code} ${err.info} `, 'Fehler', {duration: 5000});
-              return of(false)
+              return of(false);
             })).subscribe(
                 respOk => {
                   if (respOk !== false) {
@@ -132,14 +131,14 @@ export class UsersComponent implements OnInit {
             data: 'Superadmin-Status ' + (userObject.isSuperadmin ? 'entziehen' : 'setzen')
           });
 
-          passwdDialogRef.afterClosed().subscribe(result => {
-            if (typeof result !== 'undefined') {
-              if (result !== false) {
+          passwdDialogRef.afterClosed().subscribe(afterClosedResult => {
+            if (typeof afterClosedResult !== 'undefined') {
+              if (afterClosedResult !== false) {
                 this.mds.setSpinnerOn();
                 this.bs.setSuperUserStatus(
                   selectedRows[0]['id'],
                   !userObject.isSuperadmin,
-                  (<FormGroup>result).get('pw').value).subscribe(
+                  (<FormGroup>afterClosedResult).get('pw').value).subscribe(
                   respCode => {
                     if (respCode === 0) {
                       this.snackBar.open('Status geändert', '', {duration: 1000});
@@ -188,7 +187,7 @@ export class UsersComponent implements OnInit {
                 (<FormGroup>result).get('pw').value)
               .pipe(catchError((err: ApiError) => {
                 this.snackBar.open(`Konnte Kennwort nicht ändern: ${err.code} ${err.info} `, 'Fehler', {duration: 5000});
-                return of(false)
+                return of(false);
               })).subscribe(
                   respOk => {
                     this.mds.setSpinnerOff();
@@ -235,7 +234,6 @@ export class UsersComponent implements OnInit {
 
       dialogRef.afterClosed().subscribe(result => {
         if (result !== false) {
-          // =========================================================
           const usersToDelete = [];
           selectedRows.forEach((r: UserData) => usersToDelete.push(r.id));
           this.mds.setSpinnerOn();
@@ -254,7 +252,6 @@ export class UsersComponent implements OnInit {
     }
   }
 
-  // ***********************************************************************************
   updateWorkspaceList() {
     this.pendingWorkspaceChanges = false;
     if (this.selectedUser > -1) {
@@ -262,7 +259,7 @@ export class UsersComponent implements OnInit {
       this.bs.getWorkspacesByUser(this.selectedUser).subscribe(dataresponse => {
         this.WorkspacelistDatasource = new MatTableDataSource(dataresponse);
         this.mds.setSpinnerOff();
-      })
+      });
     } else {
       this.WorkspacelistDatasource = null;
     }
@@ -295,7 +292,6 @@ export class UsersComponent implements OnInit {
     }
   }
 
-  // ***********************************************************************************
   updateObjectList() {
     this.tableselectionCheckbox.clear();
     this.tableselectionRow.clear();
diff --git a/src/app/superadmin/workspaces/editworkspace/editworkspace.component.spec.ts b/src/app/superadmin/workspaces/editworkspace/editworkspace.component.spec.ts
index e3ac6df1235284ff7634fc7884ac3cad7d79e7fe..bff9b6d215e4b0bd0cfc5eff4d4bbdb587a0ac33 100644
--- a/src/app/superadmin/workspaces/editworkspace/editworkspace.component.spec.ts
+++ b/src/app/superadmin/workspaces/editworkspace/editworkspace.component.spec.ts
@@ -1,11 +1,11 @@
 import { async, ComponentFixture, TestBed } from '@angular/core/testing';
 
 import { EditworkspaceComponent } from './editworkspace.component';
-import {ReactiveFormsModule} from "@angular/forms";
-import {MAT_DIALOG_DATA, MatDialog, MatDialogModule} from "@angular/material/dialog";
-import {MatInputModule} from "@angular/material/input";
-import {MatFormFieldModule} from "@angular/material/form-field";
-import {NoopAnimationsModule} from "@angular/platform-browser/animations";
+import {ReactiveFormsModule} from '@angular/forms';
+import {MAT_DIALOG_DATA, MatDialog, MatDialogModule} from '@angular/material/dialog';
+import {MatInputModule} from '@angular/material/input';
+import {MatFormFieldModule} from '@angular/material/form-field';
+import {NoopAnimationsModule} from '@angular/platform-browser/animations';
 
 describe('EditworkspaceComponent', () => {
   let component: EditworkspaceComponent;
diff --git a/src/app/superadmin/workspaces/newworkspace/newworkspace.component.spec.ts b/src/app/superadmin/workspaces/newworkspace/newworkspace.component.spec.ts
index 0bf0a5c92355d84dcb866199a929a1cbde3b938d..6a88040e692abac3b82a771c23df5a4d85f35bfd 100644
--- a/src/app/superadmin/workspaces/newworkspace/newworkspace.component.spec.ts
+++ b/src/app/superadmin/workspaces/newworkspace/newworkspace.component.spec.ts
@@ -1,11 +1,11 @@
 import { async, ComponentFixture, TestBed } from '@angular/core/testing';
 
 import { NewworkspaceComponent } from './newworkspace.component';
-import {ReactiveFormsModule} from "@angular/forms";
-import {MatDialog, MatDialogModule} from "@angular/material/dialog";
-import {MatInputModule} from "@angular/material/input";
-import {MatFormFieldModule} from "@angular/material/form-field";
-import {NoopAnimationsModule} from "@angular/platform-browser/animations";
+import {ReactiveFormsModule} from '@angular/forms';
+import {MatDialog, MatDialogModule} from '@angular/material/dialog';
+import {MatInputModule} from '@angular/material/input';
+import {MatFormFieldModule} from '@angular/material/form-field';
+import {NoopAnimationsModule} from '@angular/platform-browser/animations';
 
 describe('NewWorkspaceComponent', () => {
   let component: NewworkspaceComponent;
diff --git a/src/app/superadmin/workspaces/newworkspace/newworkspace.component.ts b/src/app/superadmin/workspaces/newworkspace/newworkspace.component.ts
index 6fd83574628b7214ad4c8f9447dcb25ba5520428..531232b84ba1e41203de4e770699a2b255dd15db 100644
--- a/src/app/superadmin/workspaces/newworkspace/newworkspace.component.ts
+++ b/src/app/superadmin/workspaces/newworkspace/newworkspace.component.ts
@@ -8,5 +8,5 @@ import {FormGroup, Validators, FormControl} from '@angular/forms';
 export class NewworkspaceComponent {
   newworkspaceform = new FormGroup({
     name: new FormControl('', [Validators.required, Validators.minLength(3)])
-  })
+  });
 }
diff --git a/src/app/superadmin/workspaces/workspaces.component.spec.ts b/src/app/superadmin/workspaces/workspaces.component.spec.ts
index 162c69df4195920fd2a942120be5a4cc7398142f..25662b77bc06d1b31ed36c9f547072b84ed0d0de 100644
--- a/src/app/superadmin/workspaces/workspaces.component.spec.ts
+++ b/src/app/superadmin/workspaces/workspaces.component.spec.ts
@@ -1,11 +1,11 @@
 import { async, ComponentFixture, TestBed } from '@angular/core/testing';
 
 import { WorkspacesComponent } from './workspaces.component';
-import {HttpClientModule} from "@angular/common/http";
+import {HttpClientModule} from '@angular/common/http';
 import { BackendService } from '../backend.service';
-import {MatDialogModule} from "@angular/material/dialog";
-import {MatSnackBarModule} from "@angular/material/snack-bar";
-import {MainDataService} from "../../maindata.service";
+import {MatDialogModule} from '@angular/material/dialog';
+import {MatSnackBarModule} from '@angular/material/snack-bar';
+import {MainDataService} from '../../maindata.service';
 
 describe('WorkspacesComponent', () => {
   let component: WorkspacesComponent;
diff --git a/src/app/superadmin/workspaces/workspaces.component.ts b/src/app/superadmin/workspaces/workspaces.component.ts
index dfecfd25f4e610c32ae98b8f148985d934ca385e..939aa5a23fac09d219431a0935bfd6d1dea973b1 100644
--- a/src/app/superadmin/workspaces/workspaces.component.ts
+++ b/src/app/superadmin/workspaces/workspaces.component.ts
@@ -14,7 +14,7 @@ import {
   MessageDialogComponent, MessageDialogData, MessageType
 } from 'iqb-components';
 import { MainDataService } from 'src/app/maindata.service';
-import {IdAndName, IdRoleData} from "../superadmin.interfaces";
+import {IdAndName, IdRoleData} from '../superadmin.interfaces';
 
 @Component({
   templateUrl: './workspaces.component.html',
@@ -23,11 +23,11 @@ import {IdAndName, IdRoleData} from "../superadmin.interfaces";
 export class WorkspacesComponent implements OnInit {
   public objectsDatasource: MatTableDataSource<IdAndName>;
   public displayedColumns = ['selectCheckbox', 'name'];
-  private tableselectionCheckbox = new SelectionModel <IdAndName>(true, []);
-  private tableselectionRow = new SelectionModel <IdAndName>(false, []);
+  public tableselectionCheckbox = new SelectionModel <IdAndName>(true, []);
+  public tableselectionRow = new SelectionModel <IdAndName>(false, []);
   public selectedWorkspaceId = 0;
-  private selectedWorkspaceName = '';
-  private pendingUserChanges = false;
+  public selectedWorkspaceName = '';
+  public pendingUserChanges = false;
   public UserlistDatasource: MatTableDataSource<IdRoleData>;
   public displayedUserColumns = ['selectCheckbox', 'name'];
 
@@ -59,10 +59,9 @@ export class WorkspacesComponent implements OnInit {
     setTimeout(() => {
       this.mds.setSpinnerOn();
       this.updateObjectList();
-    })
+    });
   }
 
-  // ***********************************************************************************
   addObject() {
     const dialogRef = this.newworkspaceDialog.open(NewworkspaceComponent, {
       width: '600px',
@@ -164,7 +163,6 @@ export class WorkspacesComponent implements OnInit {
 
       dialogRef.afterClosed().subscribe(result => {
         if (result !== false) {
-          // =========================================================
           const workspacesToDelete = [];
           selectedRows.forEach((r: IdAndName) => workspacesToDelete.push(r.id));
           this.mds.setSpinnerOn();
@@ -183,7 +181,6 @@ export class WorkspacesComponent implements OnInit {
     }
   }
 
-  // ***********************************************************************************
   updateUserList() {
     this.pendingUserChanges = false;
     if (this.selectedWorkspaceId > 0) {
@@ -224,7 +221,6 @@ export class WorkspacesComponent implements OnInit {
     }
   }
 
-  // ***********************************************************************************
   updateObjectList() {
     this.bs.getWorkspaces().subscribe(dataresponse => {
       this.objectsDatasource = new MatTableDataSource(dataresponse);
diff --git a/src/app/sys-check/backend.service.spec.ts b/src/app/sys-check/backend.service.spec.ts
index ffdc1397ca5ced3a08516d7183bbc820c1001627..4f08e463495ffd25801192beb147079f598435bb 100644
--- a/src/app/sys-check/backend.service.spec.ts
+++ b/src/app/sys-check/backend.service.spec.ts
@@ -1,7 +1,7 @@
 import { TestBed, inject } from '@angular/core/testing';
 
 import { BackendService } from './backend.service';
-import {HttpClientModule} from "@angular/common/http";
+import {HttpClientModule} from '@angular/common/http';
 
 
 describe('HttpClient testing', () => {
diff --git a/src/app/sys-check/report/report.component.ts b/src/app/sys-check/report/report.component.ts
index 8e419413f659c5ed415eb42e55fd6170bada1bf7..3c980ee15d2d4057afd5d4741a6bf874f6ed47c2 100644
--- a/src/app/sys-check/report/report.component.ts
+++ b/src/app/sys-check/report/report.component.ts
@@ -1,19 +1,19 @@
 import { BackendService } from '../backend.service';
 import { SysCheckDataService } from '../sys-check-data.service';
-import { Component, Input } from '@angular/core';
+import {Component, Input, OnDestroy} from '@angular/core';
 import { SaveReportComponent } from './save-report/save-report.component';
 import { ReportEntry } from '../sys-check.interfaces';
 import { Subscription } from 'rxjs';
 import {ServerError} from 'iqb-components';
-import {MatDialog} from "@angular/material/dialog";
-import {MatSnackBar} from "@angular/material/snack-bar";
+import {MatDialog} from '@angular/material/dialog';
+import {MatSnackBar} from '@angular/material/snack-bar';
 
 @Component({
   selector: 'iqb-report',
   templateUrl: './report.component.html',
   styleUrls: ['./report.component.css']
 })
-export class ReportComponent {
+export class ReportComponent implements OnDestroy {
 
   @Input() canSave: boolean;
 
@@ -74,8 +74,8 @@ export class ReportComponent {
                 questionnaire: this.ds.questionnaireData$.getValue(),
                 unit: this.ds.unitData$.getValue()
               }
-          ).subscribe((result: boolean|ServerError) => {
-            if (result instanceof ServerError) {
+          ).subscribe((saveReportResult: boolean|ServerError) => {
+            if (saveReportResult instanceof ServerError) {
               this.snackBar.open('Konnte Bericht nicht speichern.', '', {duration: 3000});
             } else {
               this.snackBar.open('Bericht gespeichert.', '', {duration: 3000});
diff --git a/src/app/sys-check/sys-check.component.ts b/src/app/sys-check/sys-check.component.ts
index 2c8b26d90bd735a900a0e355607a744f89920d30..e3c7203bd5a7f5a08803817a42f2bf34b2b7fbd8 100644
--- a/src/app/sys-check/sys-check.component.ts
+++ b/src/app/sys-check/sys-check.component.ts
@@ -4,7 +4,7 @@ import {Component, OnDestroy, OnInit} from '@angular/core';
 import { BackendService } from './backend.service';
 import { Subscription } from 'rxjs';
 import { CustomtextService } from 'iqb-components';
-import {MainDataService} from "../maindata.service";
+import {MainDataService} from '../maindata.service';
 
 @Component({
   templateUrl: './sys-check.component.html',
@@ -36,7 +36,7 @@ export class SysCheckComponent implements OnInit, OnDestroy {
     this.route.paramMap.subscribe((params: ParamMap) => {
 
       const sysCheckName = params.get('sys-check-name');
-      const workspaceId = parseInt(params.get('workspace-id'));
+      const workspaceId = parseInt(params.get('workspace-id'), 10);
       setTimeout(() => {
         this.loading = true;
         this.bs.getCheckConfigData(workspaceId, sysCheckName).subscribe(checkConfig => {
@@ -72,7 +72,7 @@ export class SysCheckComponent implements OnInit, OnDestroy {
             this.isError = true;
           }
         });
-      })
+      });
     });
   }
 
diff --git a/src/app/sys-check/sys-check.interfaces.ts b/src/app/sys-check/sys-check.interfaces.ts
index f20a781c95a2474d85d40b21e34edd568f4a0c5e..860e4d8182ed47b73b46e95c461898688fcc45f3 100644
--- a/src/app/sys-check/sys-check.interfaces.ts
+++ b/src/app/sys-check/sys-check.interfaces.ts
@@ -88,5 +88,5 @@ export interface SysCheckReport {
   environment: ReportEntry[];
   network: ReportEntry[];
   questionnaire: ReportEntry[];
-  unit: ReportEntry[]
+  unit: ReportEntry[];
 }
diff --git a/src/app/sys-check/sys-check.module.ts b/src/app/sys-check/sys-check.module.ts
index 251934545b0e22d8db99c6f0e6db1ef6d9d23b73..01eb88d018e8d9744ba12f6d7e8ccf4589521391 100644
--- a/src/app/sys-check/sys-check.module.ts
+++ b/src/app/sys-check/sys-check.module.ts
@@ -20,20 +20,20 @@ import { SaveReportComponent } from './report/save-report/save-report.component'
 import { UnitNaviButtonsComponent } from './unit-check/tc-navi-buttons/unit-navi-buttons.component';
 
 import { TcSpeedChartComponent } from './network-check/tc-speed-chart.component';
-import {MatTooltipModule} from "@angular/material/tooltip";
-import {IqbComponentsModule} from "iqb-components";
-import {MatButtonModule} from "@angular/material/button";
-import {MatCardModule} from "@angular/material/card";
-import {MatCheckboxModule} from "@angular/material/checkbox";
-import {MatDialogModule} from "@angular/material/dialog";
-import {MatFormFieldModule} from "@angular/material/form-field";
-import {MatIconModule} from "@angular/material/icon";
-import {MatInputModule} from "@angular/material/input";
-import {MatProgressSpinnerModule} from "@angular/material/progress-spinner";
-import {MatRadioModule} from "@angular/material/radio";
-import {MatSelectModule} from "@angular/material/select";
-import {MatSnackBarModule} from "@angular/material/snack-bar";
-import {MatStepperModule} from "@angular/material/stepper";
+import {MatTooltipModule} from '@angular/material/tooltip';
+import {IqbComponentsModule} from 'iqb-components';
+import {MatButtonModule} from '@angular/material/button';
+import {MatCardModule} from '@angular/material/card';
+import {MatCheckboxModule} from '@angular/material/checkbox';
+import {MatDialogModule} from '@angular/material/dialog';
+import {MatFormFieldModule} from '@angular/material/form-field';
+import {MatIconModule} from '@angular/material/icon';
+import {MatInputModule} from '@angular/material/input';
+import {MatProgressSpinnerModule} from '@angular/material/progress-spinner';
+import {MatRadioModule} from '@angular/material/radio';
+import {MatSelectModule} from '@angular/material/select';
+import {MatSnackBarModule} from '@angular/material/snack-bar';
+import {MatStepperModule} from '@angular/material/stepper';
 
 @NgModule({
   imports: [
diff --git a/src/app/sys-check/unit-check/resize-IFrameChild/resize-IFrameChild.directive.spec.ts b/src/app/sys-check/unit-check/resize-IFrameChild/resize-IFrameChild.directive.spec.ts
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/src/app/sys-check/unit-check/resize-IFrameChild/resize-IFrameChild.directive.ts b/src/app/sys-check/unit-check/resize-IFrameChild/resize-IFrameChild.directive.ts
index 44fb984bff256b681c11322f1989183c44450234..3be48b20cf336a9ca41aa31af4d842869d2d2813 100644
--- a/src/app/sys-check/unit-check/resize-IFrameChild/resize-IFrameChild.directive.ts
+++ b/src/app/sys-check/unit-check/resize-IFrameChild/resize-IFrameChild.directive.ts
@@ -1,30 +1,26 @@
-import { Component, Directive, ElementRef, EventEmitter, HostListener,
-    Input, OnDestroy, OnInit, Output } from '@angular/core';
+import { Directive, ElementRef, HostListener} from '@angular/core';
 
 
-  @Directive({
-    selector: 'div[iqbResizeIFrameChild]'
-  })
-  export class ResizeIFrameChildDirective  {
+@Directive({
+  selector: 'div[iqbResizeIFrameChild]'
+})
+export class ResizeIFrameChildDirective  {
 
 
-    private _element: HTMLElement;
-
-    // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-    constructor(private element: ElementRef) {
-        this._element = this.element.nativeElement;
-    }
+  private _element: HTMLElement;
 
+  constructor(private element: ElementRef) {
+      this._element = this.element.nativeElement;
+  }
 
-    // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-    @HostListener('window:resize')
-    public onResize(): any {
-      const iFrameList = this._element.getElementsByTagName('iframe');
-      if (iFrameList.length > 0) {
-        let myIFrame: HTMLIFrameElement;
-        myIFrame = iFrameList[0];
-        const divHeight = this._element.clientHeight;
-        myIFrame.setAttribute('height', String(Math.trunc(divHeight)));
-      }
+  @HostListener('window:resize')
+  public onResize(): any {
+    const iFrameList = this._element.getElementsByTagName('iframe');
+    if (iFrameList.length > 0) {
+      let myIFrame: HTMLIFrameElement;
+      myIFrame = iFrameList[0];
+      const divHeight = this._element.clientHeight;
+      myIFrame.setAttribute('height', String(Math.trunc(divHeight)));
     }
   }
+}
diff --git a/src/app/sys-check/unit-check/tc-navi-buttons/unit-navi-buttons.component.ts b/src/app/sys-check/unit-check/tc-navi-buttons/unit-navi-buttons.component.ts
index 7efa477aeaa0392525939e167c86c5042369b83f..4f984cc2b5fc15cf5d1fca3b3e605076f60063bb 100644
--- a/src/app/sys-check/unit-check/tc-navi-buttons/unit-navi-buttons.component.ts
+++ b/src/app/sys-check/unit-check/tc-navi-buttons/unit-navi-buttons.component.ts
@@ -8,8 +8,8 @@ import { Component } from '@angular/core';
 })
 export class UnitNaviButtonsComponent {
   public showPageNaviButtons = true;
-  private pagePrevEnabled = false;
-  private pageNextEnabled = false;
+  public pagePrevEnabled = false;
+  public pageNextEnabled = false;
 
   constructor(private ds: SysCheckDataService) {
 
diff --git a/src/app/sys-check/unit-check/unit-check.component.spec.ts b/src/app/sys-check/unit-check/unit-check.component.spec.ts
index de4e5944d647198f4d5865573a4c4f6afd49d240..82a82965dd8fd760951b32e8aa5de726d39ef914 100644
--- a/src/app/sys-check/unit-check/unit-check.component.spec.ts
+++ b/src/app/sys-check/unit-check/unit-check.component.spec.ts
@@ -1,8 +1,8 @@
 import { async, ComponentFixture, TestBed } from '@angular/core/testing';
 
 import { UnitCheckComponent } from './unit-check.component';
-import {HttpClientModule} from "@angular/common/http";
-import {BackendService} from "../backend.service";
+import {HttpClientModule} from '@angular/common/http';
+import {BackendService} from '../backend.service';
 
 describe('UnitCheckComponent', () => {
   let component: UnitCheckComponent;
diff --git a/src/app/test-controller/backend.service.ts b/src/app/test-controller/backend.service.ts
index 5bc6f8cdf7e0b669072b1eb2eaf3ed4d308ccc63..42ff35e9a06090f0e745852b750c413df4da4579 100644
--- a/src/app/test-controller/backend.service.ts
+++ b/src/app/test-controller/backend.service.ts
@@ -3,7 +3,7 @@ import { HttpClient, HttpParams } from '@angular/common/http';
 import { Observable, of } from 'rxjs';
 import { catchError, map } from 'rxjs/operators';
 import {UnitData, TaggedString, TestData} from './test-controller.interfaces';
-import {ApiError} from "../app.interfaces";
+import {ApiError} from '../app.interfaces';
 
 
 @Injectable({
@@ -24,7 +24,7 @@ export class BackendService {
         map(() => true),
         catchError((err: ApiError) => {
           console.warn(`saveUnitReview Api-Error: ${err.code} ${err.info} `);
-          return of(false)
+          return of(false);
         })
       );
   }
@@ -36,7 +36,7 @@ export class BackendService {
         map(() => true),
         catchError((err: ApiError) => {
           console.warn(`saveBookletReview Api-Error: ${err.code} ${err.info} `);
-          return of(false)
+          return of(false);
         })
       );
   }
@@ -47,7 +47,7 @@ export class BackendService {
       .pipe(
         catchError((err: ApiError) => {
           console.warn(`getTestData Api-Error: ${err.code} ${err.info} `);
-          return of(false)
+          return of(false);
         })
       );
   }
@@ -58,7 +58,7 @@ export class BackendService {
       .pipe(
         catchError((err: ApiError) => {
           console.warn(`getUnitData Api-Error: ${err.code} ${err.info} `);
-          return of(false)
+          return of(false);
         })
       );
   }
@@ -75,7 +75,7 @@ export class BackendService {
         map(def => <TaggedString>{tag: internalKey, value: def}),
         catchError((err: ApiError) => {
           console.warn(`getResource Api-Error: ${err.code} ${err.info} `);
-          return of(err.code)
+          return of(err.code);
         })
       );
   }
@@ -87,7 +87,7 @@ export class BackendService {
         map(() => true),
         catchError((err: ApiError) => {
           console.warn(`addUnitLog Api-Error: ${err.code} ${err.info} `);
-          return of(false)
+          return of(false);
         })
       );
   }
@@ -99,7 +99,7 @@ export class BackendService {
         map(() => true),
         catchError((err: ApiError) => {
           console.warn(`addBookletLog Api-Error: ${err.code} ${err.info} `);
-          return of(false)
+          return of(false);
         })
       );
   }
@@ -111,7 +111,7 @@ export class BackendService {
         map(() => true),
         catchError((err: ApiError) => {
           console.warn(`setUnitState Api-Error: ${err.code} ${err.info} `);
-          return of(false)
+          return of(false);
         })
       );
   }
@@ -123,7 +123,7 @@ export class BackendService {
         map(() => true),
         catchError((err: ApiError) => {
           console.warn(`setBookletState Api-Error: ${err.code} ${err.info} `);
-          return of(false)
+          return of(false);
         })
       );
   }
@@ -136,7 +136,7 @@ export class BackendService {
         map(() => true),
         catchError((err: ApiError) => {
           console.warn(`newUnitResponse Api-Error: ${err.code} ${err.info} `);
-          return of(false)
+          return of(false);
         })
       );
   }
@@ -148,7 +148,7 @@ export class BackendService {
         map(() => true),
         catchError((err: ApiError) => {
           console.warn(`newUnitRestorePoint Api-Error: ${err.code} ${err.info} `);
-          return of(false)
+          return of(false);
         })
       );
   }
@@ -160,7 +160,7 @@ export class BackendService {
         map(() => true),
         catchError((err: ApiError) => {
           console.warn(`lockBooklet Api-Error: ${err.code} ${err.info} `);
-          return of(false)
+          return of(false);
         })
       );
   }
diff --git a/src/app/test-controller/resize-IFrameChild/resize-IFrameChild.directive.spec.ts b/src/app/test-controller/resize-IFrameChild/resize-IFrameChild.directive.spec.ts
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/src/app/test-controller/resize-IFrameChild/resize-IFrameChild.directive.ts b/src/app/test-controller/resize-IFrameChild/resize-IFrameChild.directive.ts
index 11b3280cc74f36503a482906a87b92a2028fe714..ad43d48149a28aabd55f4084ca200d32d33bc1c7 100644
--- a/src/app/test-controller/resize-IFrameChild/resize-IFrameChild.directive.ts
+++ b/src/app/test-controller/resize-IFrameChild/resize-IFrameChild.directive.ts
@@ -1,30 +1,23 @@
-import { Component, Directive, ElementRef, EventEmitter, HostListener,
-    Input, OnDestroy, OnInit, Output } from '@angular/core';
+import {Directive, ElementRef, HostListener} from '@angular/core';
 
+@Directive({
+  selector: 'div[iqbResizeIFrameChild]'
+})
+export class ResizeIFrameChildDirective  {
+  private _element: HTMLElement;
 
-  @Directive({
-    selector: 'div[iqbResizeIFrameChild]'
-  })
-  export class ResizeIFrameChildDirective  {
-
-
-    private _element: HTMLElement;
-
-    // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-    constructor(private element: ElementRef) {
-        this._element = this.element.nativeElement;
-    }
-
+  constructor(private element: ElementRef) {
+      this._element = this.element.nativeElement;
+  }
 
-    // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-    @HostListener('window:resize')
-    public onResize(): any {
-      const iFrameList = this._element.getElementsByTagName('iframe');
-      if (iFrameList.length > 0) {
-        let myIFrame: HTMLIFrameElement;
-        myIFrame = iFrameList[0];
-        const divHeight = this._element.clientHeight;
-        myIFrame.setAttribute('height', String(divHeight - 5));
-      }
+  @HostListener('window:resize')
+  public onResize(): any {
+    const iFrameList = this._element.getElementsByTagName('iframe');
+    if (iFrameList.length > 0) {
+      let myIFrame: HTMLIFrameElement;
+      myIFrame = iFrameList[0];
+      const divHeight = this._element.clientHeight;
+      myIFrame.setAttribute('height', String(divHeight - 5));
     }
   }
+}
diff --git a/src/app/test-controller/test-controller-routing.module.ts b/src/app/test-controller/test-controller-routing.module.ts
index 25a74a43659d661756911ffb0b8df70a1b8e6059..1521859029e3da5ffaa900b732fba6f3be7fd475 100644
--- a/src/app/test-controller/test-controller-routing.module.ts
+++ b/src/app/test-controller/test-controller-routing.module.ts
@@ -3,10 +3,8 @@ import { UnithostComponent } from './unithost/unithost.component';
 import { TestControllerComponent } from './test-controller.component';
 import { NgModule } from '@angular/core';
 import { Routes, RouterModule } from '@angular/router';
-import {TestStatusComponent} from "./test-status/test-status.component";
-import {TestControllerDeactivateGuard} from "./test-controller-route-guards";
-
-
+import {TestStatusComponent} from './test-status/test-status.component';
+import {TestControllerDeactivateGuard} from './test-controller-route-guards';
 
 const routes: Routes = [
   {
diff --git a/src/app/test-controller/test-controller.classes.ts b/src/app/test-controller/test-controller.classes.ts
index f827f6e34ae1794a2b4ab09cfe9aeafdc7627d24..051b32834d5bd46e176b3dfd1ac750160a5465ef 100644
--- a/src/app/test-controller/test-controller.classes.ts
+++ b/src/app/test-controller/test-controller.classes.ts
@@ -22,7 +22,6 @@ export class TestletContentElement {
     this.children = [];
   }
 
-  // """"""""""""""""""""""""""""""""""""""""""""""""""""""""
   setCanEnter (can: string, message: string, allChildren = false) {
     let newCan: 'y' | 'n' | 'w' = 'y';
     if (can.length > 0) {
@@ -42,7 +41,6 @@ export class TestletContentElement {
     }
   }
 
-  // """"""""""""""""""""""""""""""""""""""""""""""""""""""""
   setCanLeave (can: string, message: string, allChildren = false) {
     let newCan: 'y' | 'n' | 'w' = 'y';
     if (can.length > 0) {
@@ -62,7 +60,6 @@ export class TestletContentElement {
     }
   }
 
-  // """"""""""""""""""""""""""""""""""""""""""""""""""""""""
   getMaxSequenceId(tmpId = 0): number {
     if (this.sequenceId >= tmpId) {
       tmpId = this.sequenceId + 1;
@@ -74,8 +71,6 @@ export class TestletContentElement {
   }
 }
 
-// .....................................................................
-// .....................................................................
 export class UnitDef extends TestletContentElement {
   readonly alias: string;
   readonly naviButtonLabel: string;
@@ -99,7 +94,7 @@ export class UnitDef extends TestletContentElement {
       this.statusPresentation = 'no';
   }
 
-  // """"""""""""""""""""""""""""""""""""""""""""""""""""""""
+
   setStatusResponses (status: string) {
     let newStatus: 'no' | 'some' | 'all' = 'no';
     if (status.length > 0) {
@@ -113,7 +108,6 @@ export class UnitDef extends TestletContentElement {
     this.statusResponses = newStatus;
   }
 
-  // """"""""""""""""""""""""""""""""""""""""""""""""""""""""
   setStatusPresentation (status: string) {
     let newStatus: 'no' | 'partly' | 'full' = 'no';
     if (status.length > 0) {
@@ -128,8 +122,6 @@ export class UnitDef extends TestletContentElement {
   }
 }
 
-// .....................................................................
-// .....................................................................
 export class UnitControllerData {
   unitDef: UnitDef = null;
   codeRequiringTestlets: Testlet[] = [];
@@ -140,21 +132,19 @@ export class UnitControllerData {
   }
 }
 
-// .....................................................................
-// .....................................................................
 export class Testlet extends TestletContentElement {
   codeToEnter = '';
   codePrompt = '';
   maxTimeLeft = -1;
 
-  // """"""""""""""""""""""""""""""""""""""""""""""""""""""""
+
   addTestlet(id: string, title: string): Testlet {
     const newChild = new Testlet(0, id, title);
     this.children.push(newChild);
     return newChild;
   }
 
-  // """"""""""""""""""""""""""""""""""""""""""""""""""""""""
+
   addUnit(
     sequenceId: number,
     id: string,
@@ -166,7 +156,6 @@ export class Testlet extends TestletContentElement {
     return newChild;
   }
 
-  // .....................................................................
   // first looking for the unit, then on the way back adding restrictions
   getUnitAt(sequenceId: number, isEntryPoint = true): UnitControllerData {
     let myreturn: UnitControllerData = null;
@@ -194,7 +183,7 @@ export class Testlet extends TestletContentElement {
       if (!isEntryPoint) {
         const label = this.title.trim();
         if (label) {
-          myreturn.testletLabel = label
+          myreturn.testletLabel = label;
         }
 
       }
@@ -202,7 +191,6 @@ export class Testlet extends TestletContentElement {
     return myreturn;
   }
 
-  // .....................................................................
   getTestlet(testletId: string): Testlet {
     let myreturn = null;
     if (this.id === testletId) {
@@ -221,7 +209,6 @@ export class Testlet extends TestletContentElement {
     return myreturn;
   }
 
-  // .....................................................................
   getAllUnitSequenceIds(testletId = ''): number[] {
     let myreturn = [];
 
@@ -245,7 +232,6 @@ export class Testlet extends TestletContentElement {
     return myreturn;
   }
 
-  // .....................................................................
   setTimeLeftNull(testletId = '') {
     if (testletId) {
       // find testlet
@@ -265,7 +251,6 @@ export class Testlet extends TestletContentElement {
     }
   }
 
-  // .....................................................................
   lockUnits_allChildren(testletId = '') {
     if (testletId) {
       // find testlet
@@ -286,7 +271,6 @@ export class Testlet extends TestletContentElement {
     }
   }
 
-  // .....................................................................
   private minTestletUnitSequenceId(id = -1): number {
     let myreturn = id;
     for (const tce of this.children) {
@@ -303,7 +287,6 @@ export class Testlet extends TestletContentElement {
     return myreturn;
   }
 
-  // .....................................................................
   lockUnits_before(testletId = '') {
     let myTestlet: Testlet = this;
     if (testletId) {
@@ -316,7 +299,6 @@ export class Testlet extends TestletContentElement {
     }
   }
 
-  // .....................................................................
   getNextUnlockedUnitSequenceId(currentUnitSequenceId: number): number {
     currentUnitSequenceId += 1;
     let myUnit: UnitControllerData = this.getUnitAt(currentUnitSequenceId);
@@ -330,7 +312,6 @@ export class Testlet extends TestletContentElement {
     return myUnit ? currentUnitSequenceId : 0;
   }
 
-  // .....................................................................
   getFirstUnlockedUnitSequenceId(startWith: number): number {
     let myreturn = startWith;
     const myUnit: UnitControllerData = this.getUnitAt(myreturn);
@@ -348,7 +329,7 @@ export class Testlet extends TestletContentElement {
     return myUnit ? myreturn : 0;
   }
 
-  // .....................................................................
+
   getLastUnlockedUnitSequenceId(startWith: number): number {
     const maxSequenceId = this.getMaxSequenceId();
     let myreturn = startWith;
@@ -369,7 +350,6 @@ export class Testlet extends TestletContentElement {
     return myUnit ? myreturn : 0;
   }
 
-  // .....................................................................
   lockUnitsIfTimeLeftNull(lock = false) {
     lock = lock || this.maxTimeLeft === 0;
     for (const tce of this.children) {
@@ -384,9 +364,6 @@ export class Testlet extends TestletContentElement {
   }
 }
 
-
-// .....................................................................
-// .....................................................................
 export class EnvironmentData {
   public appVersion: string;
   public browserVersion = '';
@@ -405,7 +382,7 @@ export class EnvironmentData {
     this.appVersion = appVersion;
     const deviceInfo = window.navigator.userAgent;
 
-    // browser + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+    // browser
     // @ts-ignore
     const regex = /(MSIE|Trident|(?!Gecko.+)Firefox|(?!AppleWebKit.+Chrome.+)Safari(?!.+Edge)|(?!AppleWebKit.+)Chrome(?!.+Edge)|(?!AppleWebKit.+Chrome.+Safari.+)Edge|AppleWebKit(?!.+Chrome|.+Safari)|Gecko(?!.+Firefox))(?: |\/)([\d\.apre]+)/;
     // credit due to: https://gist.github.com/ticky/3909462#gistcomment-2245669
@@ -416,7 +393,7 @@ export class EnvironmentData {
     this.browserVersion = browserInfoSplits[1];
     this.browserName = browserInfoSplits[0];
 
-    // os + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+    // os
     if (deviceInfo.indexOf('Windows') !== -1) {
       if (deviceInfo.indexOf('Windows NT 10.0') !== -1) {
         this.osName = 'Windows 10';
@@ -448,7 +425,6 @@ export class EnvironmentData {
   }
 }
 
-// 7777777777777777777777777777777777777777777777777777777777777
 export class MaxTimerData {
   timeLeftSeconds: number; // seconds
   testletId: string;
@@ -470,7 +446,6 @@ export class MaxTimerData {
   }
 }
 
-// 7777777777777777777777777777777777777777777777777777777777777
 export class UnitDefLoadQueue {
   private unitsToLoad: {[sequenceId: string]: string} = {};
   private loading = false;
diff --git a/src/app/test-controller/test-controller.component.ts b/src/app/test-controller/test-controller.component.ts
index 7e2fd1cd97cf028fad393573e57bdceac3ccd809..8c510020d59de7bbc7a31cfc4ca77274f735d1f5 100644
--- a/src/app/test-controller/test-controller.component.ts
+++ b/src/app/test-controller/test-controller.component.ts
@@ -20,9 +20,9 @@ import {
 import {from, Observable, of, Subscription, throwError} from 'rxjs';
 import {concatMap, map, switchMap} from 'rxjs/operators';
 import {CustomtextService} from 'iqb-components';
-import {MatDialog} from "@angular/material/dialog";
+import {MatDialog} from '@angular/material/dialog';
 import {MatSnackBar} from '@angular/material/snack-bar';
-import {BookletConfig} from "../config/booklet-config";
+import {BookletConfig} from '../config/booklet-config';
 import { TestMode } from '../config/test-mode';
 
 
@@ -42,7 +42,7 @@ export class TestControllerComponent implements OnInit, OnDestroy {
   private lastUnitSequenceId = 0;
   public loadProgressValue = 0;
   private lastTestletIndex = 0;
-  private timerValue: MaxTimerData = null;
+  public timerValue: MaxTimerData = null;
   private timerRunning = false;
   private allUnitIds: string[] = [];
   private loadedUnitCount = 0;
@@ -69,9 +69,7 @@ export class TestControllerComponent implements OnInit, OnDestroy {
     .filter(function (e) { return e.nodeType === 1; });
   }
 
-  // ''''''''''''''''''''''''''''''''''''''''''''''''''''
   // private: recursive reading testlets/units from xml
-  // ''''''''''''''''''''''''''''''''''''''''''''''''''''
   private addTestletContentFromBookletXml(targetTestlet: Testlet, node: Element) {
     const childElements = TestControllerComponent.getChildElements(node);
     if (childElements.length > 0) {
@@ -153,9 +151,7 @@ export class TestControllerComponent implements OnInit, OnDestroy {
     }
   }
 
-  // ''''''''''''''''''''''''''''''''''''''''''''''''''''
   // private: reading booklet from xml
-  // ''''''''''''''''''''''''''''''''''''''''''''''''''''
   private getBookletFromXml(xmlString: string, loginMode: string): Testlet {
     let rootTestlet: Testlet = null;
 
@@ -218,9 +214,7 @@ export class TestControllerComponent implements OnInit, OnDestroy {
     this.loadProgressValue = this.loadedUnitCount * 100 / this.lastUnitSequenceId;
   }
 
-  // ''''''''''''''''''''''''''''''''''''''''''''''''''''
   // private: read unitdata
-  // ''''''''''''''''''''''''''''''''''''''''''''''''''''
   private loadUnitOk (myUnit: UnitDef, sequenceId: number): Observable<number> {
     myUnit.setCanEnter('n', 'Fehler beim Laden');
     return this.bs.getUnitData(this.tcs.testId, myUnit.id)
@@ -273,17 +267,17 @@ export class TestControllerComponent implements OnInit, OnDestroy {
               myUnit.setCanEnter('y', '');
 
               if (this.tcs.hasPlayer(playerId)) {
-                return of(sequenceId)
+                return of(sequenceId);
               } else {
                 // to avoid multiple calls before returning:
                 this.tcs.addPlayer(playerId, '');
                 return this.bs.getResource(this.tcs.testId, '', this.tcs.normaliseId(playerId, 'html'), true)
                   .pipe(
-                    switchMap(myData => {
-                      if (typeof myData === 'number') {
+                    switchMap((data: number|TaggedString) => {
+                      if (typeof data === 'number') {
                         return throwError(`error getting player "${playerId}"`);
                       } else {
-                        const player = myData as TaggedString;
+                        const player = data as TaggedString;
                         if (player.value.length > 0) {
                           this.tcs.addPlayer(playerId, player.value);
                           return of(sequenceId);
@@ -301,8 +295,6 @@ export class TestControllerComponent implements OnInit, OnDestroy {
       );
   }
 
-  // #####################################################################################
-  // #####################################################################################
   ngOnInit() {
     setTimeout(() => {
       this.mds.progressVisualEnabled = false;
@@ -312,7 +304,7 @@ export class TestControllerComponent implements OnInit, OnDestroy {
       }
       this.errorReportingSubscription = this.mds.appError$.subscribe(e => {
         if (this.isProductionMode && this.tcs.testMode.saveResponses) {
-          console.error(e.label + " / " + e.description);
+          console.error(e.label + ' / ' + e.description);
         }
         this.tcs.testStatus$.next(TestStatus.ERROR);
       });
@@ -381,9 +373,9 @@ export class TestControllerComponent implements OnInit, OnDestroy {
           this.bs.getTestData(this.tcs.testId).subscribe(testDataUntyped => {
             if (testDataUntyped === false) {
               this.mds.appError$.next({
-                label: "Konnte Testinformation nicht laden",
-                description: "TestController.Component: getTestData()",
-                category: "PROBLEM"
+                label: 'Konnte Testinformation nicht laden',
+                description: 'TestController.Component: getTestData()',
+                category: 'PROBLEM'
               });
             } else {
               const testData = testDataUntyped as TestData;
@@ -403,15 +395,18 @@ export class TestControllerComponent implements OnInit, OnDestroy {
 
               this.tcs.rootTestlet = this.getBookletFromXml(testData.xml, testData.mode);
 
-              document.documentElement.style.setProperty('--tc-unit-title-height', this.tcs.bookletConfig.unit_title === 'ON' ? this.mds.defaultTcUnitTitleHeight : '0');
-              document.documentElement.style.setProperty('--tc-header-height', this.tcs.bookletConfig.unit_screenheader === 'OFF' ? '0' : this.mds.defaultTcHeaderHeight);
-              document.documentElement.style.setProperty('--tc-unit-page-nav-height', this.tcs.bookletConfig.page_navibuttons === 'SEPARATE_BOTTOM' ? this.mds.defaultTcUnitPageNavHeight : '0');
+              document.documentElement.style.setProperty('--tc-unit-title-height',
+                  this.tcs.bookletConfig.unit_title === 'ON' ? this.mds.defaultTcUnitTitleHeight : '0');
+              document.documentElement.style.setProperty('--tc-header-height',
+                  this.tcs.bookletConfig.unit_screenheader === 'OFF' ? '0' : this.mds.defaultTcHeaderHeight);
+              document.documentElement.style.setProperty('--tc-unit-page-nav-height',
+                  this.tcs.bookletConfig.page_navibuttons === 'SEPARATE_BOTTOM' ? this.mds.defaultTcUnitPageNavHeight : '0');
 
               if (this.tcs.rootTestlet === null) {
                 this.mds.appError$.next({
-                  label: "Problem beim Laden der Testinformation",
-                  description: "TestController.Component: getBookletFromXml(testData.xml)",
-                  category: "PROBLEM"
+                  label: 'Problem beim Laden der Testinformation',
+                  description: 'TestController.Component: getBookletFromXml(testData.xml)',
+                  category: 'PROBLEM'
                 });
               } else {
                 this.tcs.maxUnitSequenceId = this.lastUnitSequenceId - 1;
@@ -432,9 +427,9 @@ export class TestControllerComponent implements OnInit, OnDestroy {
                   },
                   errorMessage => {
                     this.mds.appError$.next({
-                      label: "Problem beim Laden der Testinformation",
+                      label: 'Problem beim Laden der Testinformation',
                       description: errorMessage,
-                      category: "PROBLEM"
+                      category: 'PROBLEM'
                     });
                   },
                   () => {
@@ -445,7 +440,7 @@ export class TestControllerComponent implements OnInit, OnDestroy {
                     this.unitLoadBlobSubscription = from(this.unitLoadQueue).pipe(
                       concatMap(queueEntry => {
                         const unitSequ = Number(queueEntry.tag);
-                        if (this.tcs.bookletConfig.loading_mode === "EAGER") {
+                        if (this.tcs.bookletConfig.loading_mode === 'EAGER') {
                           this.incrementProgressValueBy1();
                         }
                         // avoid to load unit def if not necessary
@@ -455,9 +450,9 @@ export class TestControllerComponent implements OnInit, OnDestroy {
                           return this.bs.getResource(this.tcs.testId, queueEntry.tag, queueEntry.value).pipe(
                             map(response => {
                               if (typeof response === 'number') {
-                                return throwError(`error loading voud ${this.tcs.testId} / ${queueEntry.tag} / ${queueEntry.value}: status ${response}`)
+                                return throwError(`error loading voud ${this.tcs.testId} / ${queueEntry.tag} / ${queueEntry.value}: status ${response}`);
                               } else {
-                                return response
+                                return response;
                               }
                             })
                           );
@@ -469,9 +464,9 @@ export class TestControllerComponent implements OnInit, OnDestroy {
                       },
                       errorMessage => {
                         this.mds.appError$.next({
-                          label: "Problem beim Laden der Testinformation",
+                          label: 'Problem beim Laden der Testinformation',
                           description: errorMessage,
-                          category: "PROBLEM"
+                          category: 'PROBLEM'
                         });
                       },
                       () => { // complete
@@ -479,14 +474,14 @@ export class TestControllerComponent implements OnInit, OnDestroy {
                         this.loadProgressValue = 100;
 
                         this.tcs.loadComplete = true;
-                        if (this.tcs.bookletConfig.loading_mode === "EAGER") {
+                        if (this.tcs.bookletConfig.loading_mode === 'EAGER') {
                           this.tcs.setUnitNavigationRequest(navTarget.toString());
                           this.tcs.testStatus$.next(TestStatus.RUNNING);
                         }
                       }
                     );
 
-                    if (this.tcs.bookletConfig.loading_mode === "LAZY") {
+                    if (this.tcs.bookletConfig.loading_mode === 'LAZY') {
                       this.tcs.setUnitNavigationRequest(navTarget.toString());
                       this.tcs.testStatus$.next(TestStatus.RUNNING);
                     }
@@ -497,12 +492,10 @@ export class TestControllerComponent implements OnInit, OnDestroy {
             }
           }); // getTestData
         }
-      }) // routingSubscription
-    }) // setTimeOut
+      }); // routingSubscription
+    }); // setTimeOut
   }
 
-
-  // #####################################################################################
   showReviewDialog() {
     if (this.tcs.rootTestlet === null) {
       this.snackBar.open('Kein Testheft verfügbar.', '', {duration: 3000});
@@ -559,28 +552,23 @@ export class TestControllerComponent implements OnInit, OnDestroy {
   private unsubscribeTestSubscriptions() {
     if (this.maxTimerSubscription !== null) {
       this.maxTimerSubscription.unsubscribe();
-      this.maxTimerSubscription = null
+      this.maxTimerSubscription = null;
     }
     if (this.unitLoadXmlSubscription !== null) {
       this.unitLoadXmlSubscription.unsubscribe();
-      this.unitLoadXmlSubscription = null
+      this.unitLoadXmlSubscription = null;
     }
     if (this.unitLoadBlobSubscription !== null) {
       this.unitLoadBlobSubscription.unsubscribe();
-      this.unitLoadBlobSubscription = null
+      this.unitLoadBlobSubscription = null;
     }
   }
 
-  topMargin() {
-    this.isTopMargin = !this.isTopMargin;
-  }
-
   bottomMargin() {
     this.isBottomMargin = !this.isBottomMargin;
 
   }
 
-  // % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %
   ngOnDestroy() {
     if (this.routingSubscription !== null) {
       this.routingSubscription.unsubscribe();
diff --git a/src/app/test-controller/test-controller.interfaces.ts b/src/app/test-controller/test-controller.interfaces.ts
index 4297d25c016e331925a9f56b3db2bbd7cc2861d8..b1562aa4742b058616ac6fd62da2332c66f41127 100644
--- a/src/app/test-controller/test-controller.interfaces.ts
+++ b/src/app/test-controller/test-controller.interfaces.ts
@@ -47,12 +47,12 @@ export interface TestData {
 }
 
 export enum TestStatus {
-  RUNNING = "RUNNING",
-  WAITING_LOAD_COMPLETE = "WAITING_LOAD_COMPLETE",
-  TERMINATED = "TERMINATED",
-  PAUSED = "PAUSED",
-  WAITING_LOAD_START = "WAITING_LOAD_START",
-  ERROR = "ERROR"
+  RUNNING = 'RUNNING',
+  WAITING_LOAD_COMPLETE = 'WAITING_LOAD_COMPLETE',
+  TERMINATED = 'TERMINATED',
+  PAUSED = 'PAUSED',
+  WAITING_LOAD_START = 'WAITING_LOAD_START',
+  ERROR = 'ERROR'
 }
 
 export interface UnitMenuButtonData {
@@ -61,7 +61,7 @@ export interface UnitMenuButtonData {
   isCurrent: boolean;
   isDisabled: boolean;
   testletLabel: string;
-  testletMarker: string
+  testletMarker: string;
 }
 
 // for testcontroller service ++++++++++++++++++++++++++++++++++++++++
@@ -134,8 +134,8 @@ export interface ReviewDialogData {
 }
 
 export enum NoUnitFlag {
-  END = "end",
-  ERROR = "error"
+  END = 'end',
+  ERROR = 'error'
 }
 
 export interface KeyValuePairNumber {
@@ -143,12 +143,12 @@ export interface KeyValuePairNumber {
 }
 
 export enum UnitNavigationTarget {
-  NEXT = "#next",
-  ERROR = "#error",
-  PREVIOUS = "#previous",
-  FIRST = "#first",
-  LAST = "#last",
-  END = "#end",
-  MENU = "#menu",
-  PAUSE = "#pause"
+  NEXT = '#next',
+  ERROR = '#error',
+  PREVIOUS = '#previous',
+  FIRST = '#first',
+  LAST = '#last',
+  END = '#end',
+  MENU = '#menu',
+  PAUSE = '#pause'
 }
diff --git a/src/app/test-controller/test-controller.module.ts b/src/app/test-controller/test-controller.module.ts
index 2f87d927c14ce1da21127d0e60cddea47c02e196..b7e53a18e151df9c8810b7d1a08931ab8a718af5 100644
--- a/src/app/test-controller/test-controller.module.ts
+++ b/src/app/test-controller/test-controller.module.ts
@@ -13,20 +13,20 @@ import { FlexLayoutModule } from '@angular/flex-layout';
 import { ReviewDialogComponent } from './review-dialog/review-dialog.component';
 import { ReactiveFormsModule } from '@angular/forms';
 import { StartLockInputComponent } from './start-lock-input/start-lock-input.component';
-import {MatProgressSpinnerModule} from "@angular/material/progress-spinner";
+import {MatProgressSpinnerModule} from '@angular/material/progress-spinner';
 import { MatTooltipModule } from '@angular/material/tooltip';
-import {MatSnackBarModule} from "@angular/material/snack-bar";
-import {MatCheckboxModule} from "@angular/material/checkbox";
+import {MatSnackBarModule} from '@angular/material/snack-bar';
+import {MatCheckboxModule} from '@angular/material/checkbox';
 import { MatRadioModule } from '@angular/material/radio';
-import {MatCardModule} from "@angular/material/card";
-import {MatDialogModule} from "@angular/material/dialog";
-import {MatProgressBarModule} from "@angular/material/progress-bar";
-import {MatInputModule} from "@angular/material/input";
-import {MatFormFieldModule} from "@angular/material/form-field";
-import {MatMenuModule} from "@angular/material/menu";
-import {MatButtonModule} from "@angular/material/button";
-import {MatToolbarModule} from "@angular/material/toolbar";
-import {MatIconModule} from "@angular/material/icon";
+import {MatCardModule} from '@angular/material/card';
+import {MatDialogModule} from '@angular/material/dialog';
+import {MatProgressBarModule} from '@angular/material/progress-bar';
+import {MatInputModule} from '@angular/material/input';
+import {MatFormFieldModule} from '@angular/material/form-field';
+import {MatMenuModule} from '@angular/material/menu';
+import {MatButtonModule} from '@angular/material/button';
+import {MatToolbarModule} from '@angular/material/toolbar';
+import {MatIconModule} from '@angular/material/icon';
 import { TestStatusComponent } from './test-status/test-status.component';
 
 
diff --git a/src/app/test-controller/test-controller.service.ts b/src/app/test-controller/test-controller.service.ts
index 20e4cbe851bd0c88019616d7f50a234363743650..8f0cc821613cd0dfd24da8a6336fd3e0521206cf 100644
--- a/src/app/test-controller/test-controller.service.ts
+++ b/src/app/test-controller/test-controller.service.ts
@@ -14,8 +14,8 @@ import {
   UnitRestorePointData
 } from './test-controller.interfaces';
 import {BackendService} from './backend.service';
-import {Router} from "@angular/router";
-import {TestMode} from "../config/test-mode";
+import {Router} from '@angular/router';
+import {TestMode} from '../config/test-mode';
 import {BookletConfig} from '../config/booklet-config';
 
 @Injectable({
@@ -72,7 +72,6 @@ export class TestControllerService {
   }
 
   public LastMaxTimerState: KeyValuePairNumber = {};
-   // ))))))))))))))))))))))))))))))))))))))))))))))))
 
   private players: {[filename: string]: string} = {};
   private unitDefinitions: {[sequenceId: number]: string} = {};
@@ -97,7 +96,6 @@ export class TestControllerService {
       }
     );
 
-    // -- -- -- -- -- -- -- -- -- -- -- -- -- --
     this.responsesToSave$.pipe(
       debounceTime(200)).subscribe(response => {
         this.bs.newUnitResponse(this.testId, Date.now(), response.unitDbKey,
@@ -110,7 +108,6 @@ export class TestControllerService {
     );
   }
 
-  // 7777777777777777777777777777777777777777777777777777777777777777777777
   public resetDataStore() {
     this.players = {};
     this.unitDefinitions = {};
@@ -133,7 +130,7 @@ export class TestControllerService {
     // this.bookletLoadComplete = false;
   }
 
-  // 7777777777777777777777777777777777777777777777777777777777777777777777
+
   // uppercase and add extension if not part
   public normaliseId(s: string, standardext = ''): string {
     s = s.trim().toUpperCase();
@@ -150,29 +147,30 @@ export class TestControllerService {
     return s;
   }
 
-  // 7777777777777777777777777777777777777777777777777777777777777777777777
   public addPlayer (id: string, player: string) {
     this.players[this.normaliseId(id, 'html')] = player;
   }
+
   public hasPlayer (id: string): boolean {
     return this.players.hasOwnProperty(this.normaliseId(id, 'html'));
   }
+
   public getPlayer(id: string): string {
     return this.players[this.normaliseId(id, 'html')];
   }
 
-  // 7777777777777777777777777777777777777777777777777777777777777777777777
   public addUnitDefinition (sequenceId: number, uDef: string) {
     this.unitDefinitions[sequenceId] = uDef;
   }
+
   public hasUnitDefinition (sequenceId: number): boolean {
     return this.unitDefinitions.hasOwnProperty(sequenceId);
   }
+
   public getUnitDefinition(sequenceId: number): string {
     return this.unitDefinitions[sequenceId];
   }
 
-  // 7777777777777777777777777777777777777777777777777777777777777777777777
   // adding RestorePoint via newUnitRestorePoint below
   public hasUnitRestorePoint (sequenceId: number): boolean {
     return this.unitRestorePoints.hasOwnProperty(sequenceId);
@@ -181,19 +179,19 @@ export class TestControllerService {
     return this.unitRestorePoints[sequenceId];
   }
 
-  // 7777777777777777777777777777777777777777777777777777777777777777777777
   // adding PresentationComplete via newUnitStatePresentationComplete below
   public addUnitPresentationComplete (sequenceId: number, uPC: string) {
     this.unitPresentationCompleteStates[sequenceId] = uPC;
   }
+
   public hasUnitPresentationComplete (sequenceId: number): boolean {
     return this.unitPresentationCompleteStates.hasOwnProperty(sequenceId);
   }
+
   public getUnitPresentationComplete(sequenceId: number): string {
     return this.unitPresentationCompleteStates[sequenceId];
   }
 
-  // 7777777777777777777777777777777777777777777777777777777777777777777777
   public addBookletLog(logKey: LogEntryKey, entry = '') {
     if (this.testMode.saveResponses) {
       const entryData =  entry.length > 0 ? logKey + ': ' + JSON.stringify(entry) : logKey;
@@ -204,6 +202,7 @@ export class TestControllerService {
       });
     }
   }
+
   public setBookletState(stateKey: LastStateKey, state: string) {
     if (this.testMode.saveResponses) {
       this.bs.setBookletState(this.testId, stateKey, state).subscribe(ok => {
@@ -213,6 +212,7 @@ export class TestControllerService {
       });
     }
   }
+
   public addUnitLog(unitDbKey: string, logKey: LogEntryKey, entry = '') {
     if (this.testMode.saveResponses && this.testStatus$.getValue() === TestStatus.RUNNING) {
       this.bs.addUnitLog(this.testId, Date.now(), unitDbKey,
@@ -223,6 +223,7 @@ export class TestControllerService {
       });
     }
   }
+
   public newUnitResponse(unitDbKey: string, response: string, responseType: string) {
     if (this.testMode.saveResponses) {
       this.responsesToSave$.next({
@@ -232,6 +233,7 @@ export class TestControllerService {
       });
     }
   }
+
   public newUnitRestorePoint(unitDbKey: string, unitSequenceId: number, restorePoint: string, postToServer: boolean) {
     this.unitRestorePoints[unitSequenceId] = restorePoint;
     if (postToServer && this.testMode.saveResponses) {
@@ -241,6 +243,7 @@ export class TestControllerService {
       });
     }
   }
+
   public newUnitStatePresentationComplete(unitDbKey: string, unitSequenceId: number, presentationComplete: string) {
     this.unitPresentationCompleteStates[unitSequenceId] = presentationComplete;
     if (this.testMode.saveResponses) {
@@ -258,7 +261,6 @@ export class TestControllerService {
     }
   }
 
-  // 7777777777777777777777777777777777777777777777777777777777777777777777
   public startMaxTimer(testletId: string, timeLeftMinutes: number) {
     if (this.maxTimeIntervalSubscription !== null) {
       this.maxTimeIntervalSubscription.unsubscribe();
@@ -301,18 +303,18 @@ export class TestControllerService {
 
   public terminateTest() {
     if (this.testMode.saveResponses) {
-      this.bs.addBookletLog(this.testId, Date.now(), 'BOOKLETLOCKEDbyTESTEE').subscribe(OK =>{
+      this.bs.addBookletLog(this.testId, Date.now(), 'BOOKLETLOCKEDbyTESTEE').subscribe(OK => {
         // TODO who evaluates TestStatus when navigating to root?
         if (OK) {
           this.bs.lockBooklet(this.testId).subscribe(bsOk => {
             this.testStatus$.next(bsOk ? TestStatus.TERMINATED : TestStatus.ERROR);
             this.router.navigate(['/']);
-          })
+          });
         } else {
           this.testStatus$.next(TestStatus.ERROR);
           this.router.navigate(['/']);
         }
-      })
+      });
     } else {
       this.testStatus$.next(TestStatus.TERMINATED);
       this.router.navigate(['/']);
diff --git a/src/app/workspace-admin/backend.service.spec.ts b/src/app/workspace-admin/backend.service.spec.ts
index 7d5789ab6b2884621c702ca26fb5d3dc8b8f9f62..fab66224bdd336702239d1a3343fca0f6cbb58d1 100644
--- a/src/app/workspace-admin/backend.service.spec.ts
+++ b/src/app/workspace-admin/backend.service.spec.ts
@@ -1,8 +1,8 @@
 import { TestBed, inject } from '@angular/core/testing';
 
 import { BackendService } from './backend.service';
-import {HttpClientModule} from "@angular/common/http";
-import {WorkspaceDataService} from "./workspacedata.service";
+import {HttpClientModule} from '@angular/common/http';
+import {WorkspaceDataService} from './workspacedata.service';
 
 
 describe('HttpClient testing', () => {
diff --git a/src/app/workspace-admin/backend.service.ts b/src/app/workspace-admin/backend.service.ts
index 7a151d31c6fc03878fb5d77d1508582f5f0e2c43..7646f48ec8dc30182b07663252218aa4b8c5d0bd 100644
--- a/src/app/workspace-admin/backend.service.ts
+++ b/src/app/workspace-admin/backend.service.ts
@@ -1,11 +1,11 @@
-import { GetFileResponseData, CheckWorkspaceResponseData, SysCheckStatistics,
-  ReviewData, LogData, UnitResponse, ResultData } from './workspace.interfaces';
+import {GetFileResponseData, CheckWorkspaceResponseData, SysCheckStatistics,
+  ReviewData, LogData, UnitResponse, ResultData} from './workspace.interfaces';
 import {Injectable, Inject} from '@angular/core';
-import { HttpClient } from '@angular/common/http';
+import {HttpClient} from '@angular/common/http';
 import {Observable, of} from 'rxjs';
-import { catchError, map } from 'rxjs/operators';
-import {WorkspaceDataService} from "./workspacedata.service";
-import {ApiError, WorkspaceData} from "../app.interfaces";
+import {catchError, map} from 'rxjs/operators';
+import {WorkspaceDataService} from './workspacedata.service';
+import {ApiError, WorkspaceData} from '../app.interfaces';
 
 @Injectable({
   providedIn: 'root'
@@ -25,7 +25,7 @@ export class BackendService {
       .pipe(
         catchError((err: ApiError) => {
           console.warn(`getWorkspaceData Api-Error: ${err.code} ${err.info} `);
-          return of(err.code)
+          return of(err.code);
         })
       );
   }
@@ -36,7 +36,7 @@ export class BackendService {
       .pipe(
         catchError((err: ApiError) => {
           console.warn(`getFiles Api-Error: ${err.code} ${err.info} `);
-          return []
+          return [];
         })
       );
   }
@@ -51,7 +51,7 @@ export class BackendService {
             deleted: [],
             not_allowed: [`deleteFiles Api-Error: ${err.code} ${err.info} `],
             did_not_exist: []
-          })
+          });
         })
       );
   }
@@ -66,7 +66,7 @@ export class BackendService {
             errors: [`checkWorkspace Api-Error: ${err.code} ${err.info} `],
             infos: [],
             warnings: []
-          })
+          });
         })
       );
   }
@@ -77,7 +77,7 @@ export class BackendService {
       .pipe(
         catchError((err: ApiError) => {
           console.warn(`getResultData Api-Error: ${err.code} ${err.info} `);
-          return []
+          return [];
         })
       );
   }
@@ -88,7 +88,7 @@ export class BackendService {
       .pipe(
         catchError((err: ApiError) => {
           console.warn(`getResponses Api-Error: ${err.code} ${err.info} `);
-          return []
+          return [];
         })
       );
   }
@@ -99,7 +99,7 @@ export class BackendService {
       .pipe(
         catchError((err: ApiError) => {
           console.warn(`getLogs Api-Error: ${err.code} ${err.info} `);
-          return []
+          return [];
         })
       );
   }
@@ -110,7 +110,7 @@ export class BackendService {
       .pipe(
         catchError((err: ApiError) => {
           console.warn(`getReviews Api-Error: ${err.code} ${err.info} `);
-          return []
+          return [];
         })
       );
   }
@@ -122,7 +122,7 @@ export class BackendService {
         map(() => true),
         catchError((err: ApiError) => {
           console.warn(`deleteData Api-Error: ${err.code} ${err.info} `);
-          return of(false)
+          return of(false);
         })
       );
   }
@@ -133,7 +133,7 @@ export class BackendService {
       .pipe(
         catchError((err: ApiError) => {
           console.warn(`getSysCheckReportList Api-Error: ${err.code} ${err.info} `);
-          return []
+          return [];
         })
       );
   }
@@ -157,7 +157,7 @@ export class BackendService {
       .pipe(
         catchError((err: ApiError) => {
           console.warn(`getSysCheckReport Api-Error: ${err.code} ${err.info} `);
-          return of(false)
+          return of(false);
         })
       );
   }
@@ -172,7 +172,7 @@ export class BackendService {
             deleted: [],
             not_allowed: [`deleteSysCheckReports Api-Error: ${err.code} ${err.info} `],
             did_not_exist: []
-          })
+          });
         })
       );
   }
@@ -183,7 +183,7 @@ export class BackendService {
       .pipe(
         catchError((err: ApiError) => {
           console.warn(`downloadFile Api-Error: ${err.code} ${err.info} `);
-          return of(false)
+          return of(false);
         })
       );
   }
diff --git a/src/app/workspace-admin/files/files.component.spec.ts b/src/app/workspace-admin/files/files.component.spec.ts
index be034281f27297428faacc24ed2002f39e5f4a0c..53af9b0f52c50cd3f85d6bb92242d004bc0b42ed 100644
--- a/src/app/workspace-admin/files/files.component.spec.ts
+++ b/src/app/workspace-admin/files/files.component.spec.ts
@@ -1,12 +1,12 @@
 import { async, ComponentFixture, TestBed } from '@angular/core/testing';
 
 import { FilesComponent } from './files.component';
-import {HttpClientModule} from "@angular/common/http";
-import {BackendService} from "../backend.service";
-import {WorkspaceDataService} from "../workspacedata.service";
-import {MatDialogModule} from "@angular/material/dialog";
-import {MatSnackBarModule} from "@angular/material/snack-bar";
-import {MainDataService} from "../../maindata.service";
+import {HttpClientModule} from '@angular/common/http';
+import {BackendService} from '../backend.service';
+import {WorkspaceDataService} from '../workspacedata.service';
+import {MatDialogModule} from '@angular/material/dialog';
+import {MatSnackBarModule} from '@angular/material/snack-bar';
+import {MainDataService} from '../../maindata.service';
 
 describe('FilesComponent', () => {
   let component: FilesComponent;
diff --git a/src/app/workspace-admin/files/files.component.ts b/src/app/workspace-admin/files/files.component.ts
index a0a1821d3e77254c0e9df8ff23f9fed2530a252e..9839853bbb53327d3e5f6c30595bef76fe30e5f1 100644
--- a/src/app/workspace-admin/files/files.component.ts
+++ b/src/app/workspace-admin/files/files.component.ts
@@ -10,7 +10,7 @@ import { ViewChild } from '@angular/core';
 import { MatDialog } from '@angular/material/dialog';
 import { MatSort } from '@angular/material/sort';
 import { saveAs } from 'file-saver';
-import {MainDataService} from "../../maindata.service";
+import {MainDataService} from '../../maindata.service';
 
 @Component({
   templateUrl: './files.component.html',
@@ -46,17 +46,15 @@ export class FilesComponent implements OnInit {
     setTimeout(() => {
       this.mds.setSpinnerOn();
       this.updateFileList();
-    })
+    });
   }
 
-  // ***********************************************************************************
   checkAll(isChecked: boolean) {
     this.serverfiles.data.forEach(element => {
       element.isChecked = isChecked;
     });
   }
 
-  // ***********************************************************************************
   deleteFiles() {
     if (this.wds.wsRole === 'RW') {
       this.checkErrors = [];
@@ -101,7 +99,6 @@ export class FilesComponent implements OnInit {
               this.snackBar.open(message.join('<br>'), message.length > 1 ? 'Achtung' : '',  {duration: 1000});
               this.updateFileList();
             });
-            // =========================================================
           }
         });
       } else {
@@ -117,7 +114,7 @@ export class FilesComponent implements OnInit {
     }
   }
 
-  // ***********************************************************************************
+
   updateFileList(empty = false) {
     this.checkErrors = [];
     this.checkWarnings = [];
diff --git a/src/app/workspace-admin/files/iqb-files/iqbFilesUpload/iqbFilesUpload.component.ts b/src/app/workspace-admin/files/iqb-files/iqbFilesUpload/iqbFilesUpload.component.ts
index 03efc74d60e60f1aa1a667ac887a6c50121af4d3..b07fd9833224fd2e35f9989765786cde62b7b4f8 100644
--- a/src/app/workspace-admin/files/iqb-files/iqbFilesUpload/iqbFilesUpload.component.ts
+++ b/src/app/workspace-admin/files/iqb-files/iqbFilesUpload/iqbFilesUpload.component.ts
@@ -3,7 +3,7 @@ import {
   HttpClient, HttpEventType, HttpHeaders, HttpParams,
   HttpEvent, HttpErrorResponse
 } from '@angular/common/http';
-import {ApiError} from "../../../../app.interfaces";
+import {ApiError} from '../../../../app.interfaces';
 
 
 @Component({
@@ -19,7 +19,7 @@ import {ApiError} from "../../../../app.interfaces";
     constructor(
       private myHttpClient: HttpClient) { }
 
-    // ''''''''''''''''''''''''
+
     private _status: UploadStatus;
     get status(): UploadStatus {
       return this._status;
@@ -30,7 +30,7 @@ import {ApiError} from "../../../../app.interfaces";
       this.statusChangedEvent.emit(this);
     }
 
-    // ''''''''''''''''''''''''
+
     private requestResponseText: string;
     get statustext(): string {
       let myreturn;
@@ -102,7 +102,7 @@ import {ApiError} from "../../../../app.interfaces";
     @Output() removeFileRequestEvent = new EventEmitter<IqbFilesUploadComponent>();
     @Output() statusChangedEvent = new EventEmitter<IqbFilesUploadComponent>();
 
-    private progressPercentage = 0;
+    public progressPercentage = 0;
     public loaded = 0;
     private total = 0;
     private _file: any;
@@ -117,8 +117,7 @@ import {ApiError} from "../../../../app.interfaces";
       this.upload();
     }
 
-    // ==================================================================
-    private upload(): void {
+    upload(): void {
       if (this.status === UploadStatus.ready) {
 
         this.status = UploadStatus.busy;
@@ -172,13 +171,12 @@ import {ApiError} from "../../../../app.interfaces";
               this.requestResponseText = apiError.info;
             }
           } else {
-            this.requestResponseText = 'Hochladen nicht erfolgreich.'
+            this.requestResponseText = 'Hochladen nicht erfolgreich.';
           }
         });
       }
     }
 
-    // ==================================================================
     public remove(): void {
       if (this.fileUploadSubscription) {
         this.fileUploadSubscription.unsubscribe();
diff --git a/src/app/workspace-admin/files/iqb-files/iqbFilesUploadInputFor/iqbFilesUploadInputFor.directive.ts b/src/app/workspace-admin/files/iqb-files/iqbFilesUploadInputFor/iqbFilesUploadInputFor.directive.ts
index 8d309c375563c0c4ed74839bff62f3dec17d667c..1f05e00f2e8991f4383f84d007e40b8604c41d1c 100644
--- a/src/app/workspace-admin/files/iqb-files/iqbFilesUploadInputFor/iqbFilesUploadInputFor.directive.ts
+++ b/src/app/workspace-admin/files/iqb-files/iqbFilesUploadInputFor/iqbFilesUploadInputFor.directive.ts
@@ -1,58 +1,53 @@
 import { Directive, ElementRef, HostListener, Input } from '@angular/core';
 
+@Directive({
+  selector: 'input[iqbFilesUploadInputFor], div[iqbFilesUploadInputFor]',
+})
+export class IqbFilesUploadInputForDirective  {
 
-  @Directive({
-    selector: 'input[iqbFilesUploadInputFor], div[iqbFilesUploadInputFor]',
-  })
-  export class IqbFilesUploadInputForDirective  {
 
+  private _queue: any = null;
+  private _element: HTMLElement;
 
-    private _queue: any = null;
-    private _element: HTMLElement;
 
-    // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-    constructor(private element: ElementRef) {
-        this._element = this.element.nativeElement;
-    }
-
-
-    @Input('iqbFilesUploadInputFor')
-    set filesUploadQueue(value: any) {
-        if (value) {
-            this._queue = value;
-        }
-    }
-
-    // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-    @HostListener('change')
-    public onChange(): any {
-      const files = this.element.nativeElement.files;
-      // this.onFileSelected.emit(files);
+  constructor(private element: ElementRef) {
+      this._element = this.element.nativeElement;
+  }
 
-      for (let i = 0; i < files.length; i++) {
-        this._queue.add(files[i]);
+  @Input('iqbFilesUploadInputFor')
+  set filesUploadQueue(value: any) {
+      if (value) {
+          this._queue = value;
       }
-      this.element.nativeElement.value = '';
-    }
+  }
 
-    // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-    @HostListener('drop', [ '$event' ])
-    public onDrop(event: any): any {
-      const files = event.dataTransfer.files;
-      // this.onFileSelected.emit(files);
+  @HostListener('change')
+  public onChange(): any {
+    const files = this.element.nativeElement.files;
+    // this.onFileSelected.emit(files);
 
-      for (let i = 0; i < files.length; i++) {
-        this._queue.add(files[i]);
-      }
-      event.preventDefault();
-      event.stopPropagation();
-      this.element.nativeElement.value = '';
+    for (let i = 0; i < files.length; i++) {
+      this._queue.add(files[i]);
     }
+    this.element.nativeElement.value = '';
+  }
 
-    // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-    @HostListener('dragover', [ '$event' ])
-    public onDropOver(event: any): any {
-      event.preventDefault();
+  @HostListener('drop', [ '$event' ])
+  public onDrop(event: any): any {
+    const files = event.dataTransfer.files;
+    // this.onFileSelected.emit(files);
+
+    for (let i = 0; i < files.length; i++) {
+      this._queue.add(files[i]);
     }
+    event.preventDefault();
+    event.stopPropagation();
+    this.element.nativeElement.value = '';
+  }
 
+  @HostListener('dragover', [ '$event' ])
+  public onDropOver(event: any): any {
+    event.preventDefault();
   }
+
+}
diff --git a/src/app/workspace-admin/files/iqb-files/iqbFilesUploadQueue/iqbFilesUploadQueue.component.ts b/src/app/workspace-admin/files/iqb-files/iqbFilesUploadQueue/iqbFilesUploadQueue.component.ts
index a38670d4992230545f7e9315e56786eeffaa5b95..eab15d540e764ad76096dc56dabe0aa9df073474 100644
--- a/src/app/workspace-admin/files/iqb-files/iqbFilesUploadQueue/iqbFilesUploadQueue.component.ts
+++ b/src/app/workspace-admin/files/iqb-files/iqbFilesUploadQueue/iqbFilesUploadQueue.component.ts
@@ -16,7 +16,7 @@ import { HttpHeaders, HttpParams } from '@angular/common/http';
     @ViewChildren(IqbFilesUploadComponent) fileUploads: QueryList<IqbFilesUploadComponent>;
 
     public files: Array<any> = [];
-    private disableClearButton = true;
+    public disableClearButton = true;
 
     /* Http request input bindings */
     @Input()
@@ -49,29 +49,25 @@ import { HttpHeaders, HttpParams } from '@angular/common/http';
 
     @Output() uploadCompleteEvent = new EventEmitter<IqbFilesUploadQueueComponent>();
 
-    // +++++++++++++++++++++++++++++++++++++++++++++++++
     add(file: any) {
       this.files.push(file);
     }
 
-    // +++++++++++++++++++++++++++++++++++++++++++++++++
     public removeAll() {
       this.files.splice(0, this.files.length);
     }
 
-    // +++++++++++++++++++++++++++++++++++++++++++++++++
     ngOnDestroy() {
       if (this.files) {
         this.removeAll();
       }
     }
 
-    // +++++++++++++++++++++++++++++++++++++++++++++++++
     removeFile(fileToRemove: IqbFilesUploadComponent) {
       this.files.splice(fileToRemove.id, 1);
     }
 
-/*    // +++++++++++++++++++++++++++++++++++++++++++++++++
+/*
     updateStatus() {
       this.numberOfErrors = 0;
       this.numberOfUploads = 0;
@@ -82,7 +78,6 @@ import { HttpHeaders, HttpParams } from '@angular/common/http';
       });
     } */
 
-    // +++++++++++++++++++++++++++++++++++++++++++++++++
     analyseStatus() {
       let someoneiscomplete = false;
       let someoneisbusy = false;
diff --git a/src/app/workspace-admin/results/results.component.spec.ts b/src/app/workspace-admin/results/results.component.spec.ts
index 8459e696515a3783ae0e28c4806ab3f1f1b67b5a..5ca49495fba82b985291f72e48341a52eddc31aa 100644
--- a/src/app/workspace-admin/results/results.component.spec.ts
+++ b/src/app/workspace-admin/results/results.component.spec.ts
@@ -1,11 +1,11 @@
 import { async, ComponentFixture, TestBed } from '@angular/core/testing';
 
 import { ResultsComponent } from './results.component';
-import {HttpClientModule} from "@angular/common/http";
-import {BackendService} from "../backend.service";
-import {WorkspaceDataService} from "../workspacedata.service";
-import {MatDialogModule} from "@angular/material/dialog";
-import {MatSnackBarModule} from "@angular/material/snack-bar";
+import {HttpClientModule} from '@angular/common/http';
+import {BackendService} from '../backend.service';
+import {WorkspaceDataService} from '../workspacedata.service';
+import {MatDialogModule} from '@angular/material/dialog';
+import {MatSnackBarModule} from '@angular/material/snack-bar';
 
 describe('ResultsComponent', () => {
   let component: ResultsComponent;
diff --git a/src/app/workspace-admin/results/results.component.ts b/src/app/workspace-admin/results/results.component.ts
index df968035f98b6a2237b909b499257547fe5f3f1d..3125b27b132305c56de61e39ac6963bc6226bf63 100644
--- a/src/app/workspace-admin/results/results.component.ts
+++ b/src/app/workspace-admin/results/results.component.ts
@@ -10,7 +10,7 @@ import { MatTableDataSource } from '@angular/material/table';
 import { SelectionModel } from '@angular/cdk/collections';
 import { saveAs } from 'file-saver';
 import { ResultData, UnitResponse, ReviewData } from '../workspace.interfaces';
-import {MainDataService} from "../../maindata.service";
+import {MainDataService} from '../../maindata.service';
 
 
 @Component({
@@ -37,7 +37,7 @@ export class ResultsComponent implements OnInit {
     setTimeout(() => {
       this.mds.setSpinnerOn();
       this.updateTable();
-    })
+    });
   }
 
   updateTable() {
@@ -130,7 +130,6 @@ export class ResultsComponent implements OnInit {
     }
   }
 
-  // 444444444444444444444444444444444444444444444444444444444444444444444444444444444444444
   downloadReviewsCSV() {
     if (this.tableselectionCheckbox.selected.length > 0) {
       const selectedGroups: string[] = [];
@@ -192,7 +191,6 @@ export class ResultsComponent implements OnInit {
     }
   }
 
-  // 444444444444444444444444444444444444444444444444444444444444444444444444444444444444444
   downloadLogsCSV() {
     if (this.tableselectionCheckbox.selected.length > 0) {
       const selectedGroups: string[] = [];
@@ -260,7 +258,7 @@ export class ResultsComponent implements OnInit {
               this.snackBar.open('Löschen nicht erfolgreich.', 'Fehler', {duration: 3000});
             }
             this.tableselectionCheckbox.clear();
-            this.updateTable()
+            this.updateTable();
           });
         }
       });
diff --git a/src/app/workspace-admin/syscheck/syscheck.component.spec.ts b/src/app/workspace-admin/syscheck/syscheck.component.spec.ts
index 4377c7b57c2ef0f56dd511b73df2c8cd784e5e82..420681c31680e6682afcc209ca0be35fb64592a8 100644
--- a/src/app/workspace-admin/syscheck/syscheck.component.spec.ts
+++ b/src/app/workspace-admin/syscheck/syscheck.component.spec.ts
@@ -1,11 +1,11 @@
 import { async, ComponentFixture, TestBed } from '@angular/core/testing';
 
 import { SyscheckComponent } from './syscheck.component';
-import {HttpClientModule} from "@angular/common/http";
-import {BackendService} from "../backend.service";
-import {MatDialogModule} from "@angular/material/dialog";
-import {MatSnackBarModule} from "@angular/material/snack-bar";
-import {WorkspaceDataService} from "../workspacedata.service";
+import {HttpClientModule} from '@angular/common/http';
+import {BackendService} from '../backend.service';
+import {MatDialogModule} from '@angular/material/dialog';
+import {MatSnackBarModule} from '@angular/material/snack-bar';
+import {WorkspaceDataService} from '../workspacedata.service';
 
 describe('Workspace-Admin: SyscheckComponent', () => {
   let component: SyscheckComponent;
diff --git a/src/app/workspace-admin/syscheck/syscheck.component.ts b/src/app/workspace-admin/syscheck/syscheck.component.ts
index 0c53dd268c103e91809df632242166ea359e8b99..e8f5916b0895748485d70c5f321aad207dcad089 100644
--- a/src/app/workspace-admin/syscheck/syscheck.component.ts
+++ b/src/app/workspace-admin/syscheck/syscheck.component.ts
@@ -8,7 +8,7 @@ import { MatTableDataSource } from '@angular/material/table';
 import { SelectionModel } from '@angular/cdk/collections';
 import { saveAs } from 'file-saver';
 import { SysCheckStatistics } from '../workspace.interfaces';
-import {MainDataService} from "../../maindata.service";
+import {MainDataService} from '../../maindata.service';
 
 
 @Component({
@@ -35,7 +35,7 @@ export class SyscheckComponent implements OnInit {
     setTimeout(() => {
       this.mds.setSpinnerOn();
       this.updateTable();
-    })
+    });
   }
 
   updateTable() {
diff --git a/src/app/workspace-admin/workspace.component.ts b/src/app/workspace-admin/workspace.component.ts
index 0a388eb8bff501f87571e89501acb3b220363374..8cc26bef2c15653ffc630e40090629580d315f73 100644
--- a/src/app/workspace-admin/workspace.component.ts
+++ b/src/app/workspace-admin/workspace.component.ts
@@ -2,7 +2,7 @@ import { WorkspaceDataService } from './workspacedata.service';
 import { ActivatedRoute } from '@angular/router';
 import { Subscription } from 'rxjs';
 import { Component, OnInit, OnDestroy } from '@angular/core';
-import {BackendService} from "./backend.service";
+import {BackendService} from './backend.service';
 
 
 @Component({
@@ -28,7 +28,7 @@ export class WorkspaceComponent implements OnInit, OnDestroy {
             this.wds.wsRole = wsData.role;
           }
         }
-      )
+      );
     });
   }
 
diff --git a/src/app/workspace-admin/workspace.interfaces.ts b/src/app/workspace-admin/workspace.interfaces.ts
index 75df462de5143db0af7e28afd402d74c5b8877b5..d8d9e04943446a63abdbd5712b3b9007d6b9b6c0 100644
--- a/src/app/workspace-admin/workspace.interfaces.ts
+++ b/src/app/workspace-admin/workspace.interfaces.ts
@@ -1,7 +1,7 @@
 export interface WorkspaceData {
   id: string;
   name: string;
-  role: "RW" | "RO" | "n.d.";
+  role: 'RW' | 'RO' | 'n.d.';
 }
 
 export interface GetFileResponseData {
@@ -15,8 +15,7 @@ export interface GetFileResponseData {
   isChecked: boolean;
 }
 
-export interface CheckWorkspaceResponseData
-{
+export interface CheckWorkspaceResponseData {
   errors: string[];
   infos: string[];
   warnings: string[];