diff --git a/ivette/src/frama-c/server.ts b/ivette/src/frama-c/server.ts
index 357becad04101e30018a349cbc1ce1ff63018988..4744cd01e28e7054e8e7daff6b553518ce125a31 100644
--- a/ivette/src/frama-c/server.ts
+++ b/ivette/src/frama-c/server.ts
@@ -668,12 +668,12 @@ class Signal {
 
 // --- Memo
 
-const signals: { [id: string]: Signal } = {};
+const signals: Map<string, Signal> = new Map();
 function _signal(id: any) {
-  let s = signals[id];
+  let s = signals.get(id);
   if (!s) {
-    signals[id] = new Signal(id);
-    s = signals[id];
+    s = new Signal(id);
+    signals.set(id, s);
   }
   return s;
 }
@@ -719,15 +719,15 @@ export function useSignal(id: string, callback: any) {
 // --- Server Synchro
 
 Dome.on(READY, () => {
-  _.forEach(signals, (signal: Signal) => {
+  signals.forEach((signal: Signal) => {
     signal.sigon();
   });
 });
 
 Dome.on(SHUTDOWN, () => {
-  _.forEach(signals, (signal: Signal) => {
+  signals.forEach((signal: Signal) => {
     signal.unplug();
-    // TODO: signal.sigoff.cancel();
+    (signal.sigoff as unknown as _.Cancelable).cancel();
   });
 });