diff --git a/jams-common/src/main/java/net/jami/jams/common/updater/AppUpdater.java b/jams-common/src/main/java/net/jami/jams/common/updater/AppUpdater.java
index f147116393689436a16b4a03d371ca3e1d680456..f87c49e8b650ba1c63e5d69d3b0d9dcb1eca7d74 100644
--- a/jams-common/src/main/java/net/jami/jams/common/updater/AppUpdater.java
+++ b/jams-common/src/main/java/net/jami/jams/common/updater/AppUpdater.java
@@ -4,6 +4,7 @@ public interface AppUpdater {
 
     String getLocalVersions();
     String getRemoteVersions();
-    boolean downloadUpdates();
+    void setLicense();
+    void doUpdate();
 
 }
diff --git a/jams-launcher/src/main/java/launcher/AppStarter.java b/jams-launcher/src/main/java/launcher/AppStarter.java
index 161d876f80b0d7df26a80da0a82d712bda43d2b5..790d4c8a6faa0040842073c198f7af4338ffa0be 100644
--- a/jams-launcher/src/main/java/launcher/AppStarter.java
+++ b/jams-launcher/src/main/java/launcher/AppStarter.java
@@ -64,7 +64,9 @@ public class AppStarter extends Thread {
                 }
                 if(doUpdate.get()){
                     Server.tomcatLauncher.stopTomcat();
-                    server = new Server(appUpdater);
+                    //This will trigger a force reload of the lib.
+                    LibraryLoader.loadlibs(System.getProperty("user.dir"),AppStarter.class);
+                    server = ServerLoader.loadServer(appUpdater);
                     this.doUpdate.set(false);
                 }
             }
diff --git a/updater/src/main/java/net/jami/jams/updater/JAMSUpdater.java b/updater/src/main/java/net/jami/jams/updater/JAMSUpdater.java
index be19243700b25fe95cf2f0936426af814d29fcde..371c44e0f71f97c63ceb537137f272cc7d186b5e 100644
--- a/updater/src/main/java/net/jami/jams/updater/JAMSUpdater.java
+++ b/updater/src/main/java/net/jami/jams/updater/JAMSUpdater.java
@@ -31,7 +31,18 @@ public class JAMSUpdater implements AppUpdater {
     }
 
     @Override
-    public boolean downloadUpdates() {
-        return updateDownloader.doUpdate();
+    public void setLicense() {
+        //Trigger reading the license from disk.
+    }
+
+    @Override
+    public void doUpdate() {
+        //Some logic here about replacing the existing files.
+
+        //Notify back up-stream to the launcher that we want the update to happen.
+        doUpdate.set(true);
+        synchronized (doUpdate){
+            doUpdate.notify();
+        }
     }
 }