diff --git a/pom.xml b/pom.xml
index 0821217..517d59a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -77,6 +77,7 @@
               <shadedClassifierName>tomcat</shadedClassifierName>
               <artifactSet>
                 <excludes>
+                  <exclude>*:*:sources</exclude>
                   <exclude>*:geronimo-el*</exclude>
                   <exclude>*:geronimo-jsp*</exclude>
                   <exclude>*:geronimo-servlet*</exclude>
@@ -85,30 +86,10 @@
               <transformers>
                 <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                   <manifestEntries>
-                    <Export-Package>javax.xml, javax.xml.ws, javax.xml.ws.handler, javax.xml.ws.handler.soap,
-                      javax.xml.ws.spi, javax.xml.ws.http, javax.xml.ws.soap,javax.xml.soap, javax.xml.namespace,
-                      javax.xml.registry, javax.xml.registry.infomodel, javax.xml.rpc, javax.xml.rpc.encoding,
-                      javax.xml.rpc.handler, javax.xml.rpc.handler.soap, javax.xml.rpc.holders, javax.xml.rpc.server,
-                      javax.xml.rpc.soap, javax.xml.stream, javax.xml.stream.events, javax.xml.stream.util,
-                      javax.xml.bind, javax.xml.bind.annotation, javax.xml.bind.annotation.adapters,
-                      javax.xml.bind.attachment, javax.xml.bind.helpers, javax.xml.bind.util, javax.mail,
-                      javax.mail.event, javax.mail.internet, javax.mail.search, javax.mail.util, javax.activation,
-                      javax.annotation, javax.annotation.security, javax.ejb, javax.ejb.spi, javax.interceptor,
-                      javax.resource, javax.resource.cci, javax.resource.spi, javax.resource.spi.endpoint,
-                      javax.resource.spi.security, javax.resource.spi.work, javax.enterprise, javax.enterprise.deploy,
-                      javax.enterprise.deploy.model, javax.enterprise.deploy.model.exceptions,
-                      javax.enterprise.deploy.shared, javax.enterprise.deploy.shared.factories,
-                      javax.enterprise.deploy.spi, javax.enterprise.deploy.spi.exceptions,
-                      javax.enterprise.deploy.spi.factories, javax.enterprise.deploy.spi.status, javax.management,
-                      javax.management.j2ee, javax.management.j2ee.statistics, javax.security, javax.security.jacc,
-                      javax.jms, javax.persistence, javax.persistence.spi, javax.transaction,
-                      javax.transaction.xa,
-                      javax.jws, javax.jws.soap, org.apache.geronimo, org.apache.geronimo.mail,
-                      org.apache.geronimo.mail.handlers, org.apache.geronimo.mail.util
-                    </Export-Package>
+                    <Export-Package>javax.xml,javax.xml.ws,javax.xml.ws.handler,javax.xml.ws.handler.soap,javax.xml.ws.spi,javax.xml.ws.http,javax.xml.ws.soap,javax.xml.soap,javax.xml.namespace,javax.xml.registry,javax.xml.registry.infomodel,javax.xml.rpc,javax.xml.rpc.encoding,javax.xml.rpc.handler,javax.xml.rpc.handler.soap,javax.xml.rpc.holders,javax.xml.rpc.server,javax.xml.rpc.soap,javax.xml.stream,javax.xml.stream.events,javax.xml.stream.util,javax.xml.bind,javax.xml.bind.annotation,javax.xml.bind.annotation.adapters,javax.xml.bind.attachment,javax.xml.bind.helpers,javax.xml.bind.util,javax.activation,javax.annotation,javax.annotation.security,javax.ejb,javax.ejb.spi,javax.interceptor,javax.resource,javax.resource.cci,javax.resource.spi,javax.resource.spi.endpoint,javax.resource.spi.security,javax.resource.spi.work,javax.enterprise,javax.enterprise.deploy,javax.enterprise.deploy.model,javax.enterprise.deploy.model.exceptions,javax.enterprise.deploy.shared,javax.enterprise.deploy.shared.factories,javax.enterprise.deploy.spi,javax.enterprise.deploy.spi.exceptions,javax.enterprise.deploy.spi.factories,javax.enterprise.deploy.spi.status,javax.management,javax.management.j2ee,javax.management.j2ee.statistics,javax.security,javax.security.jacc,javax.jms,javax.persistence,javax.persistence.spi,javax.transaction,javax.transaction.xa,javax.jws,javax.jws.soap</Export-Package>
                     <Import-Package>org.apache.geronimo.osgi.registry.api;resolution:=optional,*</Import-Package>
                     <Private-Package>org.apache.geronimo.osgi.locator</Private-Package>
-                    <Bundle-Activator>org.apache.geronimo.osgi.locator.Activator</Bundle-Activator>
+                    <Bundle-Activator>org.apache.openejb.javaee.api.activator.MultiActivator</Bundle-Activator>
                   </manifestEntries>
                 </transformer>
               </transformers>
@@ -136,33 +117,18 @@
             </goals>
             <configuration>
               <createSourcesJar>true</createSourcesJar>
+              <artifactSet>
+                <excludes>
+                  <exclude>*:*:sources</exclude>
+                </excludes>
+              </artifactSet>
               <transformers>
                 <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                   <manifestEntries>
-                    <Export-Package>javax.xml, javax.xml.ws, javax.xml.ws.handler, javax.xml.ws.handler.soap,
-                      javax.xml.ws.spi, javax.xml.ws.http, javax.xml.ws.soap,javax.xml.soap, javax.xml.namespace,
-                      javax.xml.registry, javax.xml.registry.infomodel, javax.xml.rpc, javax.xml.rpc.encoding,
-                      javax.xml.rpc.handler, javax.xml.rpc.handler.soap, javax.xml.rpc.holders, javax.xml.rpc.server,
-                      javax.xml.rpc.soap, javax.xml.stream, javax.xml.stream.events, javax.xml.stream.util,
-                      javax.xml.bind, javax.xml.bind.annotation, javax.xml.bind.annotation.adapters,
-                      javax.xml.bind.attachment, javax.xml.bind.helpers, javax.xml.bind.util, javax.mail,
-                      javax.mail.event, javax.mail.internet, javax.mail.search, javax.mail.util, javax.activation,
-                      javax.annotation, javax.annotation.security, javax.ejb, javax.ejb.spi, javax.interceptor,
-                      javax.resource, javax.resource.cci, javax.resource.spi, javax.resource.spi.endpoint,
-                      javax.resource.spi.security, javax.resource.spi.work, javax.enterprise, javax.enterprise.deploy,
-                      javax.enterprise.deploy.model, javax.enterprise.deploy.model.exceptions,
-                      javax.enterprise.deploy.shared, javax.enterprise.deploy.shared.factories,
-                      javax.enterprise.deploy.spi, javax.enterprise.deploy.spi.exceptions,
-                      javax.enterprise.deploy.spi.factories, javax.enterprise.deploy.spi.status, javax.management,
-                      javax.management.j2ee, javax.management.j2ee.statistics, javax.security, javax.security.jacc,
-                      javax.jms, javax.persistence, javax.persistence.spi, javax.transaction,
-                      javax.transaction.xa, javax.servlet, javax.servlet.http, javax.servlet.resources,
-                      javax.jws, javax.ws.rs, javax.jws.soap, org.apache.geronimo, org.apache.geronimo.mail,
-                      org.apache.geronimo.mail.handlers, org.apache.geronimo.mail.util
-                    </Export-Package>
+                    <Export-Package>javax.xml,javax.xml.ws,javax.xml.ws.handler,javax.xml.ws.handler.soap,javax.xml.ws.spi,javax.xml.ws.http,javax.xml.ws.soap,javax.xml.soap,javax.xml.namespace,javax.xml.registry,javax.xml.registry.infomodel,javax.xml.rpc,javax.xml.rpc.encoding,javax.xml.rpc.handler,javax.xml.rpc.handler.soap,javax.xml.rpc.holders,javax.xml.rpc.server,javax.xml.rpc.soap,javax.xml.stream,javax.xml.stream.events,javax.xml.stream.util,javax.xml.bind,javax.xml.bind.annotation,javax.xml.bind.annotation.adapters,javax.xml.bind.attachment,javax.xml.bind.helpers,javax.xml.bind.util,javax.activation,javax.annotation,javax.annotation.security,javax.ejb,javax.ejb.spi,javax.interceptor,javax.resource,javax.resource.cci,javax.resource.spi,javax.resource.spi.endpoint,javax.resource.spi.security,javax.resource.spi.work,javax.enterprise,javax.enterprise.deploy,javax.enterprise.deploy.model,javax.enterprise.deploy.model.exceptions,javax.enterprise.deploy.shared,javax.enterprise.deploy.shared.factories,javax.enterprise.deploy.spi,javax.enterprise.deploy.spi.exceptions,javax.enterprise.deploy.spi.factories,javax.enterprise.deploy.spi.status,javax.management,javax.management.j2ee,javax.management.j2ee.statistics,javax.security,javax.security.jacc,javax.jms,javax.persistence,javax.persistence.spi,javax.transaction,javax.transaction.xa,javax.servlet,javax.servlet.http,javax.servlet.resources,javax.jws,javax.ws.rs,javax.jws.soap</Export-Package>
                     <Import-Package>org.apache.geronimo.osgi.registry.api;resolution:=optional,*</Import-Package>
                     <Private-Package>org.apache.geronimo.osgi.locator</Private-Package>
-                    <Bundle-Activator>org.apache.geronimo.osgi.locator.Activator</Bundle-Activator>
+                    <Bundle-Activator>org.apache.openejb.javaee.api.activator.MultiActivator</Bundle-Activator>
                   </manifestEntries>
                 </transformer>
               </transformers>
@@ -190,6 +156,12 @@
   <dependencies>
 
     <dependency>
+      <groupId>org.osgi</groupId>
+      <artifactId>org.osgi.core</artifactId>
+      <version>4.2.0</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
       <groupId>org.apache.geronimo.specs</groupId>
       <artifactId>geronimo-activation_1.1_spec</artifactId>
       <version>1.1</version>
@@ -224,17 +196,6 @@
     </dependency>
     <dependency>
       <groupId>org.apache.geronimo.specs</groupId>
-      <artifactId>geronimo-ccpp_1.0_spec</artifactId>
-      <version>1.0-beta</version>
-      <classifier>sources</classifier>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.geronimo.specs</groupId>
-      <artifactId>geronimo-ccpp_1.0_spec</artifactId>
-      <version>1.0-beta</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.geronimo.specs</groupId>
       <artifactId>geronimo-ejb_3.1_spec</artifactId>
       <version>1.0.2</version>
       <classifier>sources</classifier>
diff --git a/src/main/java/org/apache/openejb/javaee/api/activator/MultiActivator.java b/src/main/java/org/apache/openejb/javaee/api/activator/MultiActivator.java
new file mode 100644
index 0000000..143b540
--- /dev/null
+++ b/src/main/java/org/apache/openejb/javaee/api/activator/MultiActivator.java
@@ -0,0 +1,48 @@
+/*
+ * 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.openejb.javaee.api.activator;
+
+import org.apache.geronimo.specs.jpa.PersistenceActivator;
+import org.osgi.framework.BundleActivator;
+import org.osgi.framework.BundleContext;
+
+/**
+ * This exists only to call the 3 BundleActivators present in the un-amalgamated jars.
+ * @version $Rev$ $Date$
+ */
+public class MultiActivator implements BundleActivator {
+
+    private final org.apache.geronimo.osgi.locator.Activator locator = new org.apache.geronimo.osgi.locator.Activator();
+    private final org.apache.geronimo.specs.activation.Activator activation = new org.apache.geronimo.specs.activation.Activator();
+    private final PersistenceActivator persistence = new PersistenceActivator();
+
+    public void start(BundleContext bundleContext) throws Exception {
+        locator.start(bundleContext);
+        activation.start(bundleContext);
+        persistence.start(bundleContext);
+    }
+
+    public void stop(BundleContext bundleContext) throws Exception {
+        persistence.stop(bundleContext);
+        activation.stop(bundleContext);
+        locator.stop(bundleContext);
+    }
+}
