diff --git a/org.apache.felix.framework/src/main/java/org/apache/felix/framework/SystemBundle.java b/org.apache.felix.framework/src/main/java/org/apache/felix/framework/SystemBundle.java
index 32d56aa..dfe99e4 100644
--- a/org.apache.felix.framework/src/main/java/org/apache/felix/framework/SystemBundle.java
+++ b/org.apache.felix.framework/src/main/java/org/apache/felix/framework/SystemBundle.java
@@ -22,7 +22,8 @@
 import java.util.*;
 
 import org.apache.felix.framework.cache.SystemBundleArchive;
-import org.apache.felix.framework.searchpolicy.*;
+import org.apache.felix.framework.searchpolicy.R4Export;
+import org.apache.felix.framework.searchpolicy.R4Package;
 import org.apache.felix.framework.util.FelixConstants;
 import org.apache.felix.framework.util.StringMap;
 import org.apache.felix.moduleloader.IContentLoader;
@@ -68,7 +69,7 @@
         try
         {
             classPathPkgs = R4Package.parseImportOrExportHeader(
-                getFelix().getConfig().get(FelixConstants.FRAMEWORK_SYSTEMPACKAGES));
+                getFelix().getConfig().get(Constants.FRAMEWORK_SYSTEMPACKAGES));
         }
         catch (Exception ex)
         {
@@ -80,32 +81,12 @@
 
         // Now, create the list of standard framework exports for
         // the system bundle.
-        m_exports = new R4Export[classPathPkgs.length + 4];
-
-        m_exports[0] = new R4Export(
-            "org.osgi.framework",
-            new R4Directive[0],
-            new R4Attribute[] { new R4Attribute("version", "1.3.0", false) });
-
-        m_exports[1] = new R4Export(
-            "org.osgi.service.packageadmin",
-            new R4Directive[0],
-            new R4Attribute[] { new R4Attribute("version", "1.2.0", false) });
-
-        m_exports[2] = new R4Export(
-                "org.osgi.service.startlevel",
-                new R4Directive[0],
-                new R4Attribute[] { new R4Attribute("version", "1.0.0", false) });
-
-        m_exports[3] = new R4Export(
-                "org.osgi.service.url",
-                new R4Directive[0],
-                new R4Attribute[] { new R4Attribute("version", "1.0.0", false) });
+        m_exports = new R4Export[classPathPkgs.length];
 
         // Copy the class path exported packages.
         for (int i = 0; i < classPathPkgs.length; i++)
         {
-            m_exports[i + 4] = new R4Export(classPathPkgs[i]);
+            m_exports[i] = new R4Export(classPathPkgs[i]);
         }
 
         m_contentLoader = new SystemBundleContentLoader(getFelix().getLogger());
@@ -119,7 +100,7 @@
             }
 
             exportSB.append(m_exports[i].getName());
-            exportSB.append("; specification-version=\"");
+            exportSB.append("; version=\"");
             exportSB.append(m_exports[i].getVersion().toString());
             exportSB.append("\"");
         }
diff --git a/org.apache.felix.main/src/main/resources/config.properties b/org.apache.felix.main/src/main/resources/config.properties
index 0e7e0c6..15382a1 100644
--- a/org.apache.felix.main/src/main/resources/config.properties
+++ b/org.apache.felix.main/src/main/resources/config.properties
@@ -1,14 +1,22 @@
 #
 # Framework config properties.
 #
-org.osgi.framework.system.packages=javax.swing; \
+org.osgi.framework.system.packages=org.osgi.framework; version=1.3.0, \
+ org.osgi.service.packageadmin; version=1.2.0, \
+ org.osgi.service.startlevel; version=1.0.0, \
+ org.osgi.service.url; version=1.0.0, \
+ javax.swing; \
  javax.swing.plaf; \
  javax.swing.event; \
  javax.swing.table; \
  javax.swing.border; \
  javax.swing.tree; \
  javax.swing.text; \
- version=1.4
+ version=1.4, \
+ org.w3c.dom, \
+ org.xml.sax, \
+ javax.xml.parsers, \
+ javax.imageio
 org.osgi.framework.bootdelegation=sun.*,com.sun.*
 #felix.cache.profile=foo
 felix.auto.start.1= \
