diff --git a/src/main/java/org/apache/sling/installer/provider/jcr/impl/RootFolderMoveListener.java b/src/main/java/org/apache/sling/installer/provider/jcr/impl/RootFolderMoveListener.java
index b4cbd38..f41e9ad 100644
--- a/src/main/java/org/apache/sling/installer/provider/jcr/impl/RootFolderMoveListener.java
+++ b/src/main/java/org/apache/sling/installer/provider/jcr/impl/RootFolderMoveListener.java
@@ -42,6 +42,8 @@
     private final RescanTimer timer;
 
     private final String[] watchedPaths;
+    
+    private EventListener toCleanup;
 
     RootFolderMoveListener(final Session session, final String[] rootFolders,  final RescanTimer timer) throws RepositoryException {
         this.timer = timer;
@@ -58,6 +60,7 @@
             if(obsManager instanceof  JackrabbitObservationManager){
                 JackrabbitObservationManager observationManager = (JackrabbitObservationManager)obsManager;
                 observationManager.addEventListener(this, eventFilter);
+                toCleanup = this;
                 logger.info("Watching {} to detect move changes in subfolders", Arrays.toString(watchedPaths));
             }
         }
@@ -69,12 +72,11 @@
     }
 
     void cleanup(final Session session) throws RepositoryException {
-        if(watchedPaths != null && watchedPaths.length > 0){
-            session.getWorkspace().getObservationManager().removeEventListener(this);
+        if(toCleanup != null) {
+            session.getWorkspace().getObservationManager().removeEventListener(toCleanup);
         }
     }
 
-
     /**
      * Schedule a scan.
      */
