diff --git a/sigil/common/core/src/org/apache/felix/sigil/config/BldConfig.java b/sigil/common/core/src/org/apache/felix/sigil/config/BldConfig.java
index 902bab9..58066aa 100644
--- a/sigil/common/core/src/org/apache/felix/sigil/config/BldConfig.java
+++ b/sigil/common/core/src/org/apache/felix/sigil/config/BldConfig.java
@@ -161,7 +161,7 @@
             }
             else
             {
-                String dval = (dflt == null ? dflt.getString(null, key) : null);
+                String dval = (dflt != null ? dflt.getString(null, key) : null);
                 if (value.equals("") && (dval == null || dval.equals("")))
                 {
                     string.remove(key);
diff --git a/sigil/common/core/src/org/apache/felix/sigil/config/BldConverter.java b/sigil/common/core/src/org/apache/felix/sigil/config/BldConverter.java
index a651fc9..fe7f7b1 100644
--- a/sigil/common/core/src/org/apache/felix/sigil/config/BldConverter.java
+++ b/sigil/common/core/src/org/apache/felix/sigil/config/BldConverter.java
@@ -254,8 +254,11 @@
         
         setSimpleHeaders(id, info);
         setExports(id, bundleVersion, info, exports);
-        setImports(id, bundleVersion, info, exports);
-        setRequires(id, bundleVersion, info);
+        
+        // -imports and -requires are global to all bundles
+        setImports(null, bundleVersion, info, exports);
+        setRequires(null, bundleVersion, info);
+        
         setFragments(id, info);
         setContents(id, info, bundle);
         setLibraries(id, info, bundle);
@@ -383,9 +386,10 @@
             config.setMap( id, BldConfig.M_LIBS, libs );
         }
 
-        if ( !sources.isEmpty() || !config.getList( id, BldConfig.L_SRC_CONTENTS ).isEmpty() )
+        // -sourcedirs is global to all bundles
+        if ( !sources.isEmpty() || !config.getList( null, BldConfig.L_SRC_CONTENTS ).isEmpty() )
         {
-            config.setList( id, BldConfig.L_SRC_CONTENTS, sources );
+            config.setList( null, BldConfig.L_SRC_CONTENTS, sources );
         }
 
     }
diff --git a/sigil/common/core/src/org/apache/felix/sigil/config/BldProject.java b/sigil/common/core/src/org/apache/felix/sigil/config/BldProject.java
index 31c616f..71a693e 100644
--- a/sigil/common/core/src/org/apache/felix/sigil/config/BldProject.java
+++ b/sigil/common/core/src/org/apache/felix/sigil/config/BldProject.java
@@ -358,11 +358,11 @@
     /**
      * set internal OSGiImport and isDependency flags, based on external
      * resolve= attribute.
-     * 
-     * OSGiImport: AUTO ALWAYS NEVER dependency: default - compile !dependency:
-     * auto runtime ignore
-     * 
      */
+     // OSGiImport:    AUTO    ALWAYS     NEVER
+     // dependency:    default -          compile
+     // !dependency:   auto    runtime    ignore
+
     private void setResolve(IPackageImport pi, String resolve) throws IOException
     {
         if (pi.isOptional())
