diff --git a/dockingvl/src/main/java/fr/soleil/docking/vl/VlDockDockingManager.java b/dockingvl/src/main/java/fr/soleil/docking/vl/VlDockDockingManager.java
index 18e6cbf0415234f87a632c61785a0a0029099e25..215ab4763f88310a20a9724807ef9c66e7297089 100644
--- a/dockingvl/src/main/java/fr/soleil/docking/vl/VlDockDockingManager.java
+++ b/dockingvl/src/main/java/fr/soleil/docking/vl/VlDockDockingManager.java
@@ -16,7 +16,6 @@ import java.io.ObjectInputStream;
 import java.io.ObjectOutputStream;
 
 import javax.swing.JComponent;
-import javax.swing.JOptionPane;
 import javax.swing.UIManager;
 
 import com.vldocking.swing.docking.DockingDesktop;
@@ -83,19 +82,20 @@ public class VlDockDockingManager extends ADockingManager {
     }
 
     @Override
-    public void loadPerspective(IPerspective perspective) throws DockingException {
+    public void applyPerspective(IPerspective perspective, JComponent dockingArea) throws DockingException {
         DockingException dockingException = null;
-        if (perspective.getByteArray().length > 0) {
-
+        if ((perspective != null) && (perspective.getByteArray().length > 0)
+                && (dockingArea instanceof SoleilDockingDesktop)) {
+            SoleilDockingDesktop mainDockingDesktop = (SoleilDockingDesktop) dockingArea;
             ObjectInputStream ois = null;
             ByteArrayInputStream bais = null;
             try {
-
                 bais = new ByteArrayInputStream(perspective.getByteArray());
                 ois = new ObjectInputStream(bais);
                 mainDockingDesktop.readXML(ois);
             } catch (Exception e) {
-                dockingException = new DockingException("Perspective.load() :" + " Unexpected Error", e);
+                dockingException = new DockingException(getClass().getSimpleName()
+                        + ".applyPerspective(): Unexpected Error", e);
             } finally {
                 try {
                     if (ois != null) {
@@ -117,28 +117,36 @@ public class VlDockDockingManager extends ADockingManager {
     }
 
     @Override
-    protected void savePerspective(IPerspective perspective) {
-        ByteArrayOutputStream baos = null;
-        ObjectOutputStream ous = null;
-        baos = new ByteArrayOutputStream();
-        try {
-            ous = new ObjectOutputStream(baos);
-            mainDockingDesktop.writeXML(ous);
-        } catch (IOException e) {
-            e.printStackTrace();
-            JOptionPane.showMessageDialog(mainDockingDesktop,
-                    "Perspective.save() :" + " Unexpected Error (see traces)", "VLDock - Error",
-                    JOptionPane.ERROR_MESSAGE);
-        } finally {
+    public void updatePerspective(IPerspective perspective, JComponent dockingArea) throws DockingException {
+        DockingException dockingException = null;
+        if ((perspective != null) && (dockingArea instanceof SoleilDockingDesktop)) {
+            SoleilDockingDesktop mainDockingDesktop = (SoleilDockingDesktop) dockingArea;
+            ByteArrayOutputStream baos = null;
+            ObjectOutputStream ous = null;
+            baos = new ByteArrayOutputStream();
             try {
-                ous.close();
-                // Actually there is no effect to close baos ...
+                ous = new ObjectOutputStream(baos);
+                mainDockingDesktop.writeXML(ous);
+                perspective.setByteArray(baos.toByteArray());
             } catch (IOException e) {
-                e.printStackTrace();
+                dockingException = new DockingException(getClass().getSimpleName()
+                        + ".updatePerspective(): Unexpected Error", e);
+            } finally {
+                try {
+                    ous.close();
+                    // Actually there is no effect to close baos ...
+                } catch (IOException e) {
+                    if (dockingException == null) {
+                        dockingException = new DockingException("I/O Exception", e);
+                    } else {
+                        e.printStackTrace();
+                    }
+                }
             }
         }
-        perspective.setByteArray(baos.toByteArray());
-
+        if (dockingException != null) {
+            throw dockingException;
+        }
     }
 
     @Override