diff --git a/dockingcore/pom.xml b/dockingcore/pom.xml
index 183b542861c10662106cd0f1eac8070181eace0a..d3206632d08d61360a013edc72291fb736f3ebc6 100644
--- a/dockingcore/pom.xml
+++ b/dockingcore/pom.xml
@@ -69,6 +69,10 @@
       <groupId>org.swinglabs</groupId>
       <artifactId>swingx</artifactId>
     </dependency>
+    <dependency>
+      <groupId>fr.soleil.lib</groupId>
+      <artifactId>BasicUtilities</artifactId>
+    </dependency>
   </dependencies>
 
 </project>
diff --git a/dockingcore/src/main/java/fr/soleil/docking/ADockingManager.java b/dockingcore/src/main/java/fr/soleil/docking/ADockingManager.java
index 38790bdacbcc6e22fd526c0aaf5a5ea4dd76832e..1cd45a0efa229d04ce59011a2a794e093bccde62 100644
--- a/dockingcore/src/main/java/fr/soleil/docking/ADockingManager.java
+++ b/dockingcore/src/main/java/fr/soleil/docking/ADockingManager.java
@@ -14,6 +14,7 @@ import fr.soleil.docking.exception.DockingException;
 import fr.soleil.docking.perspective.IPerspective;
 import fr.soleil.docking.perspective.IPerspectiveFactory;
 import fr.soleil.docking.view.IViewFactory;
+import fr.soleil.lib.project.ObjectUtils;
 
 /**
  * A class that prepares docking. Obtain your RootWindow from this class.
@@ -133,25 +134,26 @@ public abstract class ADockingManager implements PropertyChangeListener {
 
     @Override
     public void propertyChange(PropertyChangeEvent evt) {
-        if (evt.getSource().equals(perspectiveFactory)) {
-            if (evt.getPropertyName().equals(IPerspectiveFactory.SELECTED_PERSPECTIVE)) {
-                IPerspective oldd = (IPerspective) evt.getOldValue();
-                IPerspective neww = (IPerspective) evt.getNewValue();
-                try {
-                    if (automaticallySavePerspective) {
-                        this.savePerspective(oldd);
+        if (evt != null) {
+            if (ObjectUtils.sameObject(perspectiveFactory, evt.getSource())) {
+                if (IPerspectiveFactory.SELECTED_PERSPECTIVE.equals(evt.getPropertyName())) {
+                    IPerspective oldd = (IPerspective) evt.getOldValue();
+                    IPerspective neww = (IPerspective) evt.getNewValue();
+                    try {
+                        if (automaticallySavePerspective) {
+                            this.savePerspective(oldd);
+                        }
+                        this.loadPerspective(neww);
+                    } catch (DockingException e) {
+                        e.printStackTrace();
                     }
-                    this.loadPerspective(neww);
-                } catch (DockingException e) {
-                    e.printStackTrace();
                 }
-            }
-        } else if (evt.getSource().equals(viewFactory)) {
-            if (evt.getPropertyName().equals(IViewFactory.VIEWS)) {
-                this.updateViews(evt);
+            } else if (ObjectUtils.sameObject(viewFactory, evt.getSource())) {
+                if (IViewFactory.VIEWS.equals(evt.getPropertyName())) {
+                    this.updateViews(evt);
+                }
             }
         }
-
     }
 
     protected abstract void updateViews(PropertyChangeEvent evt);
diff --git a/dockingcore/src/main/java/fr/soleil/docking/action/NewPerspectiveAction.java b/dockingcore/src/main/java/fr/soleil/docking/action/NewPerspectiveAction.java
index eabdf290600b619818572a03e2131a08eb10451f..cb959f88ec9e5e6d04a928c653874693a75e3adc 100644
--- a/dockingcore/src/main/java/fr/soleil/docking/action/NewPerspectiveAction.java
+++ b/dockingcore/src/main/java/fr/soleil/docking/action/NewPerspectiveAction.java
@@ -55,7 +55,7 @@ public class NewPerspectiveAction extends AbstractAction {
     public void actionPerformed(ActionEvent e) {
         IPerspective current = factory.getSelectedPerspective();
         String result = JOptionPane.showInputDialog("Enter the name of the new perspective");
-        if (!result.equals("")) {
+        if ((result != null) && (!result.trim().isEmpty())) {
             IPerspective p = factory.createPerspective(result);
             byte[] array = current.getByteArray();
             byte[] copy = (array == null ? null : array.clone());
diff --git a/dockingcore/src/main/java/fr/soleil/docking/action/SelectPerspectiveAction.java b/dockingcore/src/main/java/fr/soleil/docking/action/SelectPerspectiveAction.java
index ecbf614ebdff858f99eee9c01f089ae9bc330343..518d731e7f2fb0316bd156ef7dcf1f8cbbc171ad 100644
--- a/dockingcore/src/main/java/fr/soleil/docking/action/SelectPerspectiveAction.java
+++ b/dockingcore/src/main/java/fr/soleil/docking/action/SelectPerspectiveAction.java
@@ -13,6 +13,7 @@ import javax.swing.KeyStroke;
 
 import fr.soleil.docking.perspective.IPerspective;
 import fr.soleil.docking.perspective.IPerspectiveFactory;
+import fr.soleil.lib.project.ObjectUtils;
 
 public class SelectPerspectiveAction extends AbstractAction implements PropertyChangeListener {
 
@@ -65,11 +66,13 @@ public class SelectPerspectiveAction extends AbstractAction implements PropertyC
 
     @Override
     public void propertyChange(PropertyChangeEvent evt) {
-        if (evt.getPropertyName().equals(IPerspectiveFactory.SELECTED_PERSPECTIVE)) {
-            if (evt.getNewValue().equals(this.perspective)) {
-                putValue(SELECTED_KEY, true);
-            } else {
-                putValue(SELECTED_KEY, false);
+        if (evt != null) {
+            if (IPerspectiveFactory.SELECTED_PERSPECTIVE.equals(evt.getPropertyName())) {
+                if (ObjectUtils.sameObject(evt.getNewValue(), this.perspective)) {
+                    putValue(SELECTED_KEY, true);
+                } else {
+                    putValue(SELECTED_KEY, false);
+                }
             }
         }
     }
diff --git a/dockingcore/src/main/java/fr/soleil/docking/component/PerspectiveMenu.java b/dockingcore/src/main/java/fr/soleil/docking/component/PerspectiveMenu.java
index bba0fbb221e29b9edc87391631d4e176dfecaaa7..f569661ab9349c57640ee02157b04130bf8d21b3 100644
--- a/dockingcore/src/main/java/fr/soleil/docking/component/PerspectiveMenu.java
+++ b/dockingcore/src/main/java/fr/soleil/docking/component/PerspectiveMenu.java
@@ -27,9 +27,11 @@ public class PerspectiveMenu extends javax.swing.JMenu implements PropertyChange
 
     @Override
     public void propertyChange(PropertyChangeEvent evt) {
-        if (evt.getSource() instanceof IPerspectiveFactory) {
-            if (evt.getPropertyName().equals(IPerspectiveFactory.PERSPECTIVES)) {
-
+        if (evt != null) {
+            if (evt.getSource() instanceof IPerspectiveFactory) {
+                if (IPerspectiveFactory.PERSPECTIVES.equals(evt.getPropertyName())) {
+                    // TODO
+                }
             }
         }
     }
diff --git a/dockingcore/src/main/java/fr/soleil/docking/perspective/PerspectiveFactory.java b/dockingcore/src/main/java/fr/soleil/docking/perspective/PerspectiveFactory.java
index 84d207898b540624ff51f6c7531939a332e5e2de..3e28a778854e1ed700b7236f9fcbf19f0f7dfbe5 100644
--- a/dockingcore/src/main/java/fr/soleil/docking/perspective/PerspectiveFactory.java
+++ b/dockingcore/src/main/java/fr/soleil/docking/perspective/PerspectiveFactory.java
@@ -15,6 +15,7 @@ import fr.soleil.docking.action.NewPerspectiveAction;
 import fr.soleil.docking.action.RemovePerspectiveAction;
 import fr.soleil.docking.action.SelectPerspectiveAction;
 import fr.soleil.docking.exception.DockingException;
+import fr.soleil.lib.project.ObjectUtils;
 
 public class PerspectiveFactory implements IPerspectiveFactory {
 
@@ -63,12 +64,15 @@ public class PerspectiveFactory implements IPerspectiveFactory {
     }
 
     @Override
-    public IPerspective getPerspective(Object name) {
+    public IPerspective getPerspective(Object id) {
         IPerspective result = null;
-        for (IPerspective perspective : perspectives) {
-            if (perspective.getName().equalsIgnoreCase((String) name)) {
-                result = perspective;
-                break;
+        if (id instanceof String) {
+            String name = (String) id;
+            for (IPerspective perspective : perspectives) {
+                if (name.equalsIgnoreCase(perspective.getName())) {
+                    result = perspective;
+                    break;
+                }
             }
         }
         return result;
@@ -81,7 +85,8 @@ public class PerspectiveFactory implements IPerspectiveFactory {
 
     @Override
     public void setSelectedPerspective(IPerspective selectedPerspective) {
-        if (!this.selectedPerspective.equals(selectedPerspective) && this.perspectives.contains(selectedPerspective)) {
+        if ((selectedPerspective != null) && (!selectedPerspective.equals(this.selectedPerspective))
+                && perspectives.contains(selectedPerspective)) {
             IPerspective old = this.selectedPerspective;
             this.selectedPerspective = selectedPerspective;
             support.firePropertyChange(SELECTED_PERSPECTIVE, old, this.selectedPerspective);
@@ -219,8 +224,14 @@ public class PerspectiveFactory implements IPerspectiveFactory {
 
     @Override
     public IPerspective removePerspective(final IPerspective p) {
-        int index = perspectives.indexOf(p);
-        if (index != -1 && !(p instanceof ResourcePerspective) && !p.getName().equals(defaultPerspectiveName)) {
+        int index;
+        if (p == null) {
+            index = -1;
+        } else {
+            index = perspectives.indexOf(p);
+        }
+        if ((index > -1) && (!(p instanceof ResourcePerspective))
+                && (!ObjectUtils.sameObject(p.getName(), defaultPerspectiveName))) {
             // Exist and it's not the default perspective
             perspectives.remove(index);
             support.fireIndexedPropertyChange(PERSPECTIVES, index, p, null);
diff --git a/dockingcore/src/main/java/fr/soleil/docking/view/ViewFactory.java b/dockingcore/src/main/java/fr/soleil/docking/view/ViewFactory.java
index 513458f8ff71d98583f30bc2bb6fed0fa3217d74..c7856bf6be2a6086e1187302fef05fbf67645d81 100644
--- a/dockingcore/src/main/java/fr/soleil/docking/view/ViewFactory.java
+++ b/dockingcore/src/main/java/fr/soleil/docking/view/ViewFactory.java
@@ -16,6 +16,7 @@ import java.util.prefs.Preferences;
 import javax.swing.Action;
 
 import fr.soleil.docking.action.ViewAction;
+import fr.soleil.lib.project.ObjectUtils;
 
 public class ViewFactory implements IViewFactory {
 
@@ -32,7 +33,7 @@ public class ViewFactory implements IViewFactory {
     public IView getView(Object id) {
         IView result = null;
         for (IView view : views) {
-            if (view.getId().equals(id)) {
+            if (ObjectUtils.sameObject(id, view.getId())) {
                 result = view;
                 break;
             }