diff --git a/frontend/src/app/classes/Notification.ts b/frontend/projects/netconf-lib/src/lib/classes/Notification.ts
similarity index 100%
rename from frontend/src/app/classes/Notification.ts
rename to frontend/projects/netconf-lib/src/lib/classes/Notification.ts
diff --git a/frontend/projects/netconf-lib/src/lib/components/now-connecting-form/now-connecting-form.component.ts b/frontend/projects/netconf-lib/src/lib/components/now-connecting-form/now-connecting-form.component.ts
index 50454fd..e62158a 100644
--- a/frontend/projects/netconf-lib/src/lib/components/now-connecting-form/now-connecting-form.component.ts
+++ b/frontend/projects/netconf-lib/src/lib/components/now-connecting-form/now-connecting-form.component.ts
@@ -8,6 +8,7 @@
 import {SocketService} from '../../services/socket.service';
 import {ConnectionStatus} from '../../classes/ConnectionStatus';
 import {DeviceWithStatus} from '../../classes/DeviceWithStatus';
+import {NotificationService} from '../../services/notification.service';
 
 
 enum ssh_hostcheck_status {
@@ -35,7 +36,8 @@
 
   constructor(public deviceService: DeviceService,
               public socketService: SocketService,
-              public sessionService: SessionService) {
+              public sessionService: SessionService,
+              public notificationService: NotificationService) {
   }
 
   ngOnInit() {
@@ -142,7 +144,8 @@
       _ => {
         this.sessionService.sessions = [];
         this.deviceService.clearWaitList();
-        alert('Connecting canceled!');
+        this.notificationService.sendNotification(
+          this.notificationService.createNotification('Connecting canceled!', '', 'internal'));
         this.close();
       },
       err => {
diff --git a/frontend/src/app/services/notification.service.ts b/frontend/projects/netconf-lib/src/lib/services/notification.service.ts
similarity index 78%
rename from frontend/src/app/services/notification.service.ts
rename to frontend/projects/netconf-lib/src/lib/services/notification.service.ts
index e471b70..65adcd3 100644
--- a/frontend/src/app/services/notification.service.ts
+++ b/frontend/projects/netconf-lib/src/lib/services/notification.service.ts
@@ -4,20 +4,27 @@
  */
 import {EventEmitter, Injectable} from '@angular/core';
 import {Observable} from 'rxjs';
-import {Notification} from "../classes/Notification";
+import {Notification} from '../classes/Notification';
 
 @Injectable({
     providedIn: 'root'
 })
 export class NotificationService {
 
-    public onNewNotification: EventEmitter<Notification> = new EventEmitter<Notification>();
-
     constructor() {
     }
 
+    public onNewNotification: EventEmitter<Notification> = new EventEmitter<Notification>();
+
     currentId = 0;
 
+    public static getCurrentTime(): string {
+        const now = new Date();
+        return ('0' + now.getHours()).slice(-2) + ':' +
+            ('0' + now.getMinutes()).slice(-2) + ':' +
+            ('0' + now.getSeconds()).slice(-2);
+    }
+
     public createNotification(title: string, deviceName: string, channel: string): Notification {
         return {
             id: this.getNextAvailableId(),
@@ -25,21 +32,14 @@
             time: NotificationService.getCurrentTime(),
             deviceName,
             channel
-        }
-    };
+        };
+    }
 
 
     public sendNotification(notification: Notification) {
         this.onNewNotification.emit(notification);
     }
 
-    public static getCurrentTime(): string {
-        let now = new Date();
-        return ("0" + now.getHours()).slice(-2) + ":" +
-            ("0" + now.getMinutes()).slice(-2) + ":" +
-            ("0" + now.getSeconds()).slice(-2);
-    }
-
     public getNextAvailableId(): number {
         this.currentId++;
         return this.currentId;
diff --git a/frontend/projects/netconf-lib/src/public_api.ts b/frontend/projects/netconf-lib/src/public_api.ts
index 10aea67..46bfeec 100644
--- a/frontend/projects/netconf-lib/src/public_api.ts
+++ b/frontend/projects/netconf-lib/src/public_api.ts
@@ -8,5 +8,7 @@
 export * from './lib/services/device.service';
 export * from './lib/services/schemas.service';
 export * from './lib/services/session.service';
+export * from './lib/services/notification.service';
+export * from './lib/classes/Notification';
 export * from './lib/classes/DeviceWithStatus';
 export * from './lib/classes/session';
diff --git a/frontend/src/app/components/netconf.component.ts b/frontend/src/app/components/netconf.component.ts
index 6b2e5bc..b05651b 100644
--- a/frontend/src/app/components/netconf.component.ts
+++ b/frontend/src/app/components/netconf.component.ts
@@ -4,11 +4,9 @@
  */
 
 import {Component, OnInit} from '@angular/core';
-import {ConfigService} from "../services/config.service";
-import {ProfileService} from "../services/profile.service";
-import {NotificationService} from "../services/notification.service";
-import {DeviceService, SessionService} from "../netconf-lib";
-import {DeviceWithStatus} from "../netconf-lib";
+import {ConfigService} from '../services/config.service';
+import {ProfileService} from '../services/profile.service';
+import {DeviceService, SessionService, NotificationService} from '../netconf-lib';
 
 @Component({
   selector: 'nc-base',
@@ -26,22 +24,21 @@
   ) {
   }
 
-  statusMessage: string = "Loading...";
+  statusMessage = 'Loading...';
   config: object = {};
 
   ngOnInit() {
-    this.statusMessage = "Loading config...";
+    this.statusMessage = 'Loading config...';
     this.configService.getConfig().subscribe(
       config => {
         this.config = config;
-        this.statusMessage = "Checking open sessions...";
+        this.statusMessage = 'Checking open sessions...';
         this.sessionService.loadOpenSessions().subscribe(
           sessions => {
             if (sessions.length > 0) {
-                if(confirm('Found active device sessions. Load them? (Answering "cancel" will discard these sessions)')) {
+                if (confirm('Found active device sessions. Load them? (Answering "cancel" will discard these sessions)')) {
                   this.sessionService.sessions = sessions;
-                }
-                else {
+                } else {
                   this.sessionService.destroyAllSessions().subscribe();
                   this.loadProfile();
                 }
@@ -53,47 +50,47 @@
         this.loadProfile();
       },
       err => {
-        this.statusMessage = "";
+        this.statusMessage = '';
       }
     );
   }
 
   loadProfile() {
-    this.statusMessage = "Loading profile...";
+    this.statusMessage = 'Loading profile...';
     this.profileService.getOnLoginProfile().subscribe(
       data => {
-        this.statusMessage = "";
+        this.statusMessage = '';
         if (data.connectOnLogin) {
           this.deviceService.createConnectionRequest(data.devices);
         }
       },
       err => {
-        this.statusMessage = "";
+        this.statusMessage = '';
       }
     );
 
-
-    /*setTimeout(() => {
+/*
+    setTimeout(() => {
         this.notificationService.sendNotification(
-            this.notificationService.createNotification("Notification 1", "Internal", "Channel 1")
+            this.notificationService.createNotification('Notification 1', 'Internal', 'Channel 1')
         );
     }, 250);
     setTimeout(() => {
         this.notificationService.sendNotification(
-            this.notificationService.createNotification("Notification 2", "Internal", "Channel 1")
+            this.notificationService.createNotification('Notification 2', 'Internal', 'Channel 1')
         );
     }, 1500);
     setTimeout(() => {
         this.notificationService.sendNotification(
-            this.notificationService.createNotification("Notification 3", "Internal", "Channel 1")
+            this.notificationService.createNotification('Notification 3', 'Internal', 'Channel 1')
         );
     }, 3000);
     setTimeout(() => {
         this.notificationService.sendNotification(
-            this.notificationService.createNotification("Notification 4", "Internal", "Channel 1")
+            this.notificationService.createNotification('Notification 4', 'Internal', 'Channel 1')
         );
-    }, 5000);*/
-
+    }, 5000);
+*/
   }
 
 }
diff --git a/frontend/src/app/components/shared/notification-display/notification-display.component.ts b/frontend/src/app/components/shared/notification-display/notification-display.component.ts
index 005a050..33bf30a 100644
--- a/frontend/src/app/components/shared/notification-display/notification-display.component.ts
+++ b/frontend/src/app/components/shared/notification-display/notification-display.component.ts
@@ -3,8 +3,8 @@
  * Container for notifications in the bottom-right corner of the screen
  */
 import {Component, OnInit} from '@angular/core';
-import {NotificationService} from "../../../services/notification.service";
-import {Notification} from "../../../classes/Notification";
+import {NotificationService} from '../../../netconf-lib';
+import {Notification} from '../../../netconf-lib';
 
 @Component({
     selector: 'nc-notification-display',
@@ -31,11 +31,11 @@
 
 
     addNotification(notification: Notification) {
-        this.displayedNotifications.push({notification, state: "initial"});
+        this.displayedNotifications.push({notification, state: 'initial'});
         if (this.displayedNotifications.length > 3) {
-            for(let i = 0; i < this.displayedNotifications.length - 3; i++) {
+            for (let i = 0; i < this.displayedNotifications.length - 3; i++) {
                 this.toRemove.push(this.displayedNotifications[i].notification.id);
-                this.displayedNotifications[i].state = "final"
+                this.displayedNotifications[i].state = 'final';
             }
 
         }
diff --git a/frontend/src/app/components/shared/notification-info/notification-info.component.ts b/frontend/src/app/components/shared/notification-info/notification-info.component.ts
index 7ab1b91..0e4d97c 100644
--- a/frontend/src/app/components/shared/notification-info/notification-info.component.ts
+++ b/frontend/src/app/components/shared/notification-info/notification-info.component.ts
@@ -3,8 +3,7 @@
  * Content of a single notification
  */
 import {Component, OnInit, Input, Output, EventEmitter} from '@angular/core';
-import {NotificationService} from "../../../services/notification.service";
-import {Notification} from "../../../classes/Notification";
+import {NotificationService, Notification} from '../../../netconf-lib';
 import {trigger, state, style, animate, transition} from '@angular/animations';
 
 @Component({
