diff --git a/ivette/src/frama-c/server.ts b/ivette/src/frama-c/server.ts
index 4220a8918ae6d0f81284131f6c723126abc63588..357becad04101e30018a349cbc1ce1ff63018988 100644
--- a/ivette/src/frama-c/server.ts
+++ b/ivette/src/frama-c/server.ts
@@ -618,6 +618,7 @@ class Signal {
     this.listen = false;
     this.sigon = this.sigon.bind(this);
     this.sigoff = _.debounce(this.sigoff.bind(this), 1000);
+    this.unplug = this.unplug.bind(this);
   }
 
   on(callback: any) {
@@ -659,11 +660,15 @@ class Signal {
       }
     }
   }
+
+  unplug() {
+    this.listen = false;
+  }
 }
 
 // --- Memo
 
-const signals: any[] = [];
+const signals: { [id: string]: Signal } = {};
 function _signal(id: any) {
   let s = signals[id];
   if (!s) {
@@ -714,11 +719,16 @@ export function useSignal(id: string, callback: any) {
 // --- Server Synchro
 
 Dome.on(READY, () => {
-  _.forEach(signals, (s) => s.sigon());
+  _.forEach(signals, (signal: Signal) => {
+    signal.sigon();
+  });
 });
 
 Dome.on(SHUTDOWN, () => {
-  _.forEach(signals, (s) => s.sigoff.cancel());
+  _.forEach(signals, (signal: Signal) => {
+    signal.unplug();
+    // TODO: signal.sigoff.cancel();
+  });
 });
 
 // --------------------------------------------------------------------------