diff --git a/src/app/common-components/autocomplete/autocomplete.component.ts b/src/app/common-components/autocomplete/autocomplete.component.ts
index 2f3b9d4..35139fb 100644
--- a/src/app/common-components/autocomplete/autocomplete.component.ts
+++ b/src/app/common-components/autocomplete/autocomplete.component.ts
@@ -160,8 +160,6 @@
 
   @HostListener('document:keypress', ['$event'])
   handleKeyboardEvent(event: any) {
-    const key = event.key;
-
     let clickedComponent = event.target;
     let inside = false;
     do {
diff --git a/src/app/common-components/main-navigation/main-navigation.component.ts b/src/app/common-components/main-navigation/main-navigation.component.ts
index 7dbdc5c..23d1527 100644
--- a/src/app/common-components/main-navigation/main-navigation.component.ts
+++ b/src/app/common-components/main-navigation/main-navigation.component.ts
@@ -55,8 +55,6 @@
   }
 
   goToReminderPage() {
-    const date = new Date();
-    const fdateTime = date.toISOString();
     this.router.navigate(['/reminders']);
   }
 
diff --git a/src/app/common-components/message-banner/message-banner.component.ts b/src/app/common-components/message-banner/message-banner.component.ts
index 0354dab..1838db2 100644
--- a/src/app/common-components/message-banner/message-banner.component.ts
+++ b/src/app/common-components/message-banner/message-banner.component.ts
@@ -10,8 +10,8 @@
 
 
 export class MessageBannerComponent implements OnInit, OnDestroy {
-  static allComponents: Map< MessageBannerComponent, Number > = new Map<MessageBannerComponent, Number>();
-  @Input() zOrder: Number = 0;
+  static allComponents: Map< MessageBannerComponent, number > = new Map<MessageBannerComponent, number>();
+  @Input() zOrder = 0;
 
 
   
@@ -29,9 +29,9 @@
     MessageBannerComponent.allComponents.delete(this);
   }
 
-  getMaxMessageBannerZOrder(): Number {
+  getMaxMessageBannerZOrder(): number {
     const iter =  MessageBannerComponent.allComponents.values();
-    let maxValue: Number = 0;
+    let maxValue = 0;
     let item = iter.next();
     while ( item != null && !item.done ) {
       if ( item.value > maxValue ) {
diff --git a/src/app/common-components/multiselect-dropdown/multiselect.interface.ts b/src/app/common-components/multiselect-dropdown/multiselect.interface.ts
index fda4856..fdad575 100644
--- a/src/app/common-components/multiselect-dropdown/multiselect.interface.ts
+++ b/src/app/common-components/multiselect-dropdown/multiselect.interface.ts
@@ -1,12 +1,12 @@
 export interface DropdownSettings{
-    singleSelection: Boolean;
-    text: String;
-    enableCheckAll : Boolean;
-    selectAllText: String;
-    unSelectAllText: String;
-    enableSearchFilter: Boolean;
-    maxHeight: Number;
-    badgeShowLimit: Number;
-    classes: String;
-    limitSelection?: Number;
+    singleSelection: boolean;
+    text: string;
+    enableCheckAll : boolean;
+    selectAllText: string;
+    unSelectAllText: string;
+    enableSearchFilter: boolean;
+    maxHeight: number;
+    badgeShowLimit: number;
+    classes: string;
+    limitSelection?: number;
 } 
\ No newline at end of file
diff --git a/src/app/common-components/multiselect-dropdown/multiselect.model.ts b/src/app/common-components/multiselect-dropdown/multiselect.model.ts
index 27a4ce1..c7f790d 100644
--- a/src/app/common-components/multiselect-dropdown/multiselect.model.ts
+++ b/src/app/common-components/multiselect-dropdown/multiselect.model.ts
@@ -1,11 +1,12 @@
-export class ListItem{
-    id: Number;
-    itemName: String
+export class ListItem {
+    id: number;
+    itemName: string;
 }
 export class MyException {
-	status : number;
-	body : any;
-	constructor(status : number, body : any) {
+	 status: number;
+	 body: any;
+	 
+     constructor(status: number, body: any) {
 		this.status = status;
 		this.body = body;
 	}
diff --git a/src/app/dialogs/file-import/file-import.component.ts b/src/app/dialogs/file-import/file-import.component.ts
index 4afed13..e294356 100644
--- a/src/app/dialogs/file-import/file-import.component.ts
+++ b/src/app/dialogs/file-import/file-import.component.ts
@@ -49,7 +49,7 @@
       error => {
         this.sessionContext.setBannerMessage(
           BannerMessageStatusEn.error,
-          'Fehler beim Lesen der Dateien von der Datenbank.',
+          'Fehler beim Lesen der Dateien von der Datenbank. /1/',
           true);
         this.dialogRef.close();
       });
@@ -68,7 +68,7 @@
       error => {
         this.sessionContext.setBannerMessage(
           BannerMessageStatusEn.error,
-          'Fehler beim Lesen der Dateien von der Datenbank.',
+          'Fehler beim Lesen der Dateien von der Datenbank. /2/',
           true);
         this.dialogRef.close();
       });
diff --git a/src/app/pages/overview/overview.component.ts b/src/app/pages/overview/overview.component.ts
index f5b8ef5..966f2e4 100644
--- a/src/app/pages/overview/overview.component.ts
+++ b/src/app/pages/overview/overview.component.ts
@@ -75,20 +75,22 @@
           this.responsibilitiesContainer = respsCurrent;
         },
           error => {
-            console.log(error);
-            this.messageService.emitError('Verantwortlichkeiten', ErrorType.retrieve);
-            this.responsiblitiesRetrieveDone = true;
+            this.handleGetRespError(error);
           });
       }
     },
       error => {
-        console.log(error);
-        this.messageService.emitError('Verantwortlichkeiten', ErrorType.retrieve);
-        this.responsiblitiesRetrieveDone = true;
+        this.handleGetRespError(error);
       }
     );
   }
 
+  private handleGetRespError(error: any) {
+    console.log(error);
+    this.messageService.emitError('Verantwortlichkeiten', ErrorType.retrieve);
+    this.responsiblitiesRetrieveDone = true;
+ }
+
   openDialogNewEntry() {
     const dialogRef = this.dialog.open(EntryComponent, this.dialogConfig);
     dialogRef.componentInstance.isInstructionDialog = false;
@@ -138,7 +140,6 @@
   openDialogShiftChangeProtocol(responsibilitiesContainer: TerritoryResponsibility[]) {
     const dialogRef = this.dialog.open(ShiftChangeProtocolComponent, this.dialogConfig);
     this.shiftChangeOpened = true;
-    const self = this;
     dialogRef.componentInstance.setResponsibilitiesContainer(responsibilitiesContainer);
     dialogRef.afterClosed().subscribe(result => {
       this.shiftChangeClosed = true;
diff --git a/src/app/services/message.service.ts b/src/app/services/message.service.ts
index acbd35f..dc47db4 100644
--- a/src/app/services/message.service.ts
+++ b/src/app/services/message.service.ts
@@ -13,7 +13,7 @@
 
   public loginLogoff$: EventEmitter<string> = new EventEmitter<string>();
 
-  public matrixFilterChanged$: EventEmitter<Number[]> = new EventEmitter<Number[]>();
+  public matrixFilterChanged$: EventEmitter<number[]> = new EventEmitter<number[]>();
   public errorOccured$: EventEmitter<BannerMessage> = new EventEmitter<BannerMessage>();
   public emitError(location: string, errorType?: ErrorType) {
     let message = '';
