diff --git a/bundles/org.eclipse.equinox.p2.directorywatcher/src/org/eclipse/equinox/internal/p2/directorywatcher/ProvisioningListener.java b/bundles/org.eclipse.equinox.p2.directorywatcher/src/org/eclipse/equinox/internal/p2/directorywatcher/ProvisioningListener.java
index 51861c8..ebbd16a 100644
--- a/bundles/org.eclipse.equinox.p2.directorywatcher/src/org/eclipse/equinox/internal/p2/directorywatcher/ProvisioningListener.java
+++ b/bundles/org.eclipse.equinox.p2.directorywatcher/src/org/eclipse/equinox/internal/p2/directorywatcher/ProvisioningListener.java
@@ -134,8 +134,9 @@
 	}
 
 	private void generate() {
-		File directory = watcher.getDirectory();
-		IGeneratorInfo info = getProvider(new File[] {directory}, directory);
+		File[] directories = watcher.getDirectories();
+		// TODO this prob isn't right.
+		IGeneratorInfo info = getProvider(directories, directories[0]);
 		new Generator(info).generate();
 	}
 
diff --git a/bundles/org.eclipse.equinox.p2.directorywatcher/src/org/eclipse/equinox/internal/provisional/p2/directorywatcher/DirectoryWatcher.java b/bundles/org.eclipse.equinox.p2.directorywatcher/src/org/eclipse/equinox/internal/provisional/p2/directorywatcher/DirectoryWatcher.java
index 6efe2b8..c704d2c 100644
--- a/bundles/org.eclipse.equinox.p2.directorywatcher/src/org/eclipse/equinox/internal/provisional/p2/directorywatcher/DirectoryWatcher.java
+++ b/bundles/org.eclipse.equinox.p2.directorywatcher/src/org/eclipse/equinox/internal/provisional/p2/directorywatcher/DirectoryWatcher.java
@@ -57,7 +57,7 @@
 		System.err.println(string + ": " + e);
 	}
 
-	final File directory;
+	final File[] directories;
 
 	long poll = 2000;
 	private Set listeners = new HashSet();
@@ -73,14 +73,20 @@
 
 		File targetDirectory = new File(dir);
 		targetDirectory.mkdirs();
-		directory = targetDirectory;
+		directories = new File[] {targetDirectory};
 	}
 
 	public DirectoryWatcher(File directory) {
 		if (directory == null)
 			throw new IllegalArgumentException("Folder must not be null");
 
-		this.directory = directory;
+		this.directories = new File[] {directory};
+	}
+
+	public DirectoryWatcher(File[] directories) {
+		if (directories == null)
+			throw new IllegalArgumentException("Folder must not be null");
+		this.directories = directories;
 	}
 
 	public synchronized void addListener(DirectoryChangeListener listener) {
@@ -117,8 +123,8 @@
 		watcher = null;
 	}
 
-	public File getDirectory() {
-		return directory;
+	public File[] getDirectories() {
+		return directories;
 	}
 
 	private void startPoll() {
@@ -130,25 +136,28 @@
 	}
 
 	private void scanDirectories() {
-		File list[] = directory.listFiles();
-		if (list == null)
-			return;
-		for (int i = 0; i < list.length; i++) {
-			File file = list[i];
-			// if this is a deletion marker then add to the list of pending deletions.
-			if (list[i].getPath().endsWith(".del")) {
-				File target = new File(file.getPath().substring(0, file.getPath().length() - 4));
-				removals.add(target);
-				pendingDeletions.add(target);
-			} else {
-				// else remember that we saw the file and remove it from this list of files to be 
-				// removed at the end.  Then notify all the listeners as needed.
-				scannedFiles.add(file);
-				removals.remove(file);
-				for (Iterator iterator = listeners.iterator(); iterator.hasNext();) {
-					DirectoryChangeListener listener = (DirectoryChangeListener) iterator.next();
-					if (isInterested(listener, file))
-						processFile(file, listener);
+		for (int index = 0; index < directories.length; index++) {
+			File directory = directories[index];
+			File list[] = directory.listFiles();
+			if (list == null)
+				return;
+			for (int i = 0; i < list.length; i++) {
+				File file = list[i];
+				// if this is a deletion marker then add to the list of pending deletions.
+				if (list[i].getPath().endsWith(".del")) {
+					File target = new File(file.getPath().substring(0, file.getPath().length() - 4));
+					removals.add(target);
+					pendingDeletions.add(target);
+				} else {
+					// else remember that we saw the file and remove it from this list of files to be 
+					// removed at the end.  Then notify all the listeners as needed.
+					scannedFiles.add(file);
+					removals.remove(file);
+					for (Iterator iterator = listeners.iterator(); iterator.hasNext();) {
+						DirectoryChangeListener listener = (DirectoryChangeListener) iterator.next();
+						if (isInterested(listener, file))
+							processFile(file, listener);
+					}
 				}
 			}
 		}
diff --git a/bundles/org.eclipse.equinox.p2.reconciler.dropins/src/org/eclipse/equinox/internal/p2/reconciler/dropins/Activator.java b/bundles/org.eclipse.equinox.p2.reconciler.dropins/src/org/eclipse/equinox/internal/p2/reconciler/dropins/Activator.java
index 6515344..2f52b99 100644
--- a/bundles/org.eclipse.equinox.p2.reconciler.dropins/src/org/eclipse/equinox/internal/p2/reconciler/dropins/Activator.java
+++ b/bundles/org.eclipse.equinox.p2.reconciler.dropins/src/org/eclipse/equinox/internal/p2/reconciler/dropins/Activator.java
@@ -120,24 +120,19 @@
 		RepositoryListener listener = new RepositoryListener(Activator.getContext(), Integer.toString(folder.hashCode()));
 		listener.getArtifactRepository().setProperty(PROFILE_EXTENSION, profile.getProfileId());
 
-		DirectoryWatcher watcher = new DirectoryWatcher(folder);
+		List folders = new ArrayList();
+		folders.add(folder);
+		File eclipseFeatures = new File(folder, "eclipse/features");
+		if (eclipseFeatures.isDirectory())
+			folders.add(eclipseFeatures);
+		File eclipsePlugins = new File(folder, "eclipse/plugins");
+		if (eclipsePlugins.isDirectory())
+			folders.add(eclipsePlugins);
+
+		DirectoryWatcher watcher = new DirectoryWatcher((File[]) folders.toArray(new File[folders.size()]));
 		watcher.addListener(listener);
 		watcher.poll();
 
-		File eclipseFeatures = new File(folder, "eclipse/features");
-		if (eclipseFeatures.isDirectory()) {
-			DirectoryWatcher eclipsePluginsWatcher = new DirectoryWatcher(eclipseFeatures);
-			eclipsePluginsWatcher.addListener(listener);
-			eclipsePluginsWatcher.poll();
-		}
-
-		File eclipsePlugins = new File(folder, "eclipse/plugins");
-		if (eclipsePlugins.isDirectory()) {
-			DirectoryWatcher eclipsePluginsWatcher = new DirectoryWatcher(eclipsePlugins);
-			eclipsePluginsWatcher.addListener(listener);
-			eclipsePluginsWatcher.poll();
-		}
-
 		dropinRepository = listener.getMetadataRepository();
 	}
 
diff --git a/bundles/org.eclipse.equinox.p2.reconciler/src/org/eclipse/equinox/internal/p2/reconciler/dropins/Activator.java b/bundles/org.eclipse.equinox.p2.reconciler/src/org/eclipse/equinox/internal/p2/reconciler/dropins/Activator.java
index 6515344..2f52b99 100644
--- a/bundles/org.eclipse.equinox.p2.reconciler/src/org/eclipse/equinox/internal/p2/reconciler/dropins/Activator.java
+++ b/bundles/org.eclipse.equinox.p2.reconciler/src/org/eclipse/equinox/internal/p2/reconciler/dropins/Activator.java
@@ -120,24 +120,19 @@
 		RepositoryListener listener = new RepositoryListener(Activator.getContext(), Integer.toString(folder.hashCode()));
 		listener.getArtifactRepository().setProperty(PROFILE_EXTENSION, profile.getProfileId());
 
-		DirectoryWatcher watcher = new DirectoryWatcher(folder);
+		List folders = new ArrayList();
+		folders.add(folder);
+		File eclipseFeatures = new File(folder, "eclipse/features");
+		if (eclipseFeatures.isDirectory())
+			folders.add(eclipseFeatures);
+		File eclipsePlugins = new File(folder, "eclipse/plugins");
+		if (eclipsePlugins.isDirectory())
+			folders.add(eclipsePlugins);
+
+		DirectoryWatcher watcher = new DirectoryWatcher((File[]) folders.toArray(new File[folders.size()]));
 		watcher.addListener(listener);
 		watcher.poll();
 
-		File eclipseFeatures = new File(folder, "eclipse/features");
-		if (eclipseFeatures.isDirectory()) {
-			DirectoryWatcher eclipsePluginsWatcher = new DirectoryWatcher(eclipseFeatures);
-			eclipsePluginsWatcher.addListener(listener);
-			eclipsePluginsWatcher.poll();
-		}
-
-		File eclipsePlugins = new File(folder, "eclipse/plugins");
-		if (eclipsePlugins.isDirectory()) {
-			DirectoryWatcher eclipsePluginsWatcher = new DirectoryWatcher(eclipsePlugins);
-			eclipsePluginsWatcher.addListener(listener);
-			eclipsePluginsWatcher.poll();
-		}
-
 		dropinRepository = listener.getMetadataRepository();
 	}
 
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/directorywatcher/DirectoryWatcherTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/directorywatcher/DirectoryWatcherTest.java
index 6d69f35..f9da12a 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/directorywatcher/DirectoryWatcherTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/directorywatcher/DirectoryWatcherTest.java
@@ -27,7 +27,7 @@
 
 	public void testCreateDirectoryWatcherNullDirectory() throws Exception {
 		try {
-			new DirectoryWatcher(null);
+			new DirectoryWatcher((File) null);
 		} catch (IllegalArgumentException e) {
 			return;
 		}
