diff --git a/fileinstall/src/main/java/org/apache/felix/fileinstall/internal/FileInstall.java b/fileinstall/src/main/java/org/apache/felix/fileinstall/internal/FileInstall.java
index bd29152..468cfb6 100644
--- a/fileinstall/src/main/java/org/apache/felix/fileinstall/internal/FileInstall.java
+++ b/fileinstall/src/main/java/org/apache/felix/fileinstall/internal/FileInstall.java
@@ -97,13 +97,21 @@
             set(ht, DirectoryWatcher.POLL);
             set(ht, DirectoryWatcher.DIR);
             set(ht, DirectoryWatcher.LOG_LEVEL);
+            set(ht, DirectoryWatcher.LOG_DEFAULT);
             set(ht, DirectoryWatcher.FILTER);
             set(ht, DirectoryWatcher.TMPDIR);
             set(ht, DirectoryWatcher.START_NEW_BUNDLES);
             set(ht, DirectoryWatcher.USE_START_TRANSIENT);
+            set(ht, DirectoryWatcher.USE_START_ACTIVATION_POLICY);
             set(ht, DirectoryWatcher.NO_INITIAL_DELAY);
+            set(ht, DirectoryWatcher.DISABLE_CONFIG_SAVE);
+            set(ht, DirectoryWatcher.ENABLE_CONFIG_SAVE);
             set(ht, DirectoryWatcher.START_LEVEL);
+            set(ht, DirectoryWatcher.ACTIVE_LEVEL);
+            set(ht, DirectoryWatcher.UPDATE_WITH_LISTENERS);
             set(ht, DirectoryWatcher.OPTIONAL_SCOPE);
+            set(ht, DirectoryWatcher.FRAGMENT_SCOPE);
+            set(ht, DirectoryWatcher.DISABLE_NIO2);
             set(ht, DirectoryWatcher.SUBDIR_MODE);
 
             // check if dir is an array of dirs
diff --git a/gogo/runtime/src/test/java/org/apache/felix/gogo/runtime/AbstractParserTest.java b/gogo/runtime/src/test/java/org/apache/felix/gogo/runtime/AbstractParserTest.java
new file mode 100644
index 0000000..7522397
--- /dev/null
+++ b/gogo/runtime/src/test/java/org/apache/felix/gogo/runtime/AbstractParserTest.java
@@ -0,0 +1,47 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.felix.gogo.runtime;
+
+import junit.framework.TestCase;
+import org.apache.felix.gogo.runtime.threadio.ThreadIOImpl;
+
+public abstract class AbstractParserTest extends TestCase {
+
+    private ThreadIOImpl threadIO;
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        threadIO = new ThreadIOImpl();
+        threadIO.start();
+    }
+
+    @Override
+    protected void tearDown() throws Exception {
+        threadIO.stop();
+        super.tearDown();
+    }
+
+    public class Context extends org.apache.felix.gogo.runtime.Context {
+        public Context() {
+            super(AbstractParserTest.this.threadIO);
+        }
+    }
+
+}
