diff --git a/distribution/features/src/main/resources/features.xml b/distribution/features/src/main/resources/features.xml
index 8297d20..435e610 100644
--- a/distribution/features/src/main/resources/features.xml
+++ b/distribution/features/src/main/resources/features.xml
@@ -3,22 +3,12 @@
     <repository>mvn:org.apache.cxf.karaf/apache-cxf/${cxf.version}/xml/features</repository>
     <repository>mvn:org.apache.aries.rsa/rsa-features/${aries.rsa.version}/xml/features</repository>
 
-    <feature name="cxf-dosgi-base" description="base libs needed outside karaf" version="${project.version}" resolver="(obr)">
-        <bundle start-level="8">mvn:org.ops4j.pax.logging/pax-logging-api/1.8.5</bundle>
-        <bundle start-level="8">mvn:org.ops4j.pax.logging/pax-logging-service/1.8.5</bundle>
-        <bundle start-level="10">mvn:org.apache.felix/org.apache.felix.configadmin/1.8.8</bundle>
-        <bundle start-level="11">mvn:org.apache.felix/org.apache.felix.fileinstall/3.5.0</bundle>
-        <bundle start-level="20">mvn:org.apache.aries/org.apache.aries.util/1.1.1</bundle>
-        <bundle start-level="20">mvn:org.apache.aries.proxy/org.apache.aries.proxy.api/1.0.1</bundle>
-    </feature>
-    
     <feature name="cxf-dosgi-common" version="${project.version}">
         <feature>aries-rsa-core</feature>
         <feature>cxf-specs</feature>
         <feature>cxf-http</feature>
         <feature>http</feature>
         <feature>cxf-http-jetty</feature>
-        <bundle dependency="true">mvn:org.apache.felix/org.apache.felix.scr/2.0.2</bundle>
         <bundle>mvn:${project.groupId}/cxf-dosgi-common/${project.version}</bundle>
         <bundle>mvn:${project.groupId}/cxf-dosgi-decorator/${project.version}</bundle>
     </feature>
diff --git a/distribution/multi-bundle/distro.bndrun b/distribution/multi-bundle/distro.bndrun
new file mode 100644
index 0000000..dd7ba9a
--- /dev/null
+++ b/distribution/multi-bundle/distro.bndrun
@@ -0,0 +1,98 @@
+-standalone: target/index.xml
+-runsystemcapabilities: ${native_capability}
+
+-runblacklist: \
+	osgi.identity;filter:='(osgi.identity=slf4j.api)',\
+	osgi.identity;filter:='(osgi.identity=osgi.cmpn)',\
+	osgi.identity;filter:='(osgi.identity=osgi.core)'
+
+-runfw: org.apache.felix.framework;version='[5.6.8,5.6.8]'
+-runee: JavaSE-1.8
+
+-runproperties: \
+	org.ops4j.pax.logging.DefaultServiceLog.level=INFO,\
+	rsa.export.policy.filter="(name=rest)",\
+	org.apache.felix.http.jettyEnabled=true,\
+	org.osgi.framework.bootdelegation=com.sun.*,\
+	org.osgi.framework.system.packages.extra='sun.misc,javax.xml.bind.annotation;version=2.2.1,javax.xml.bind;version=2.2.1'
+	
+# felix.cm.loglevel=4,\
+#	felix.fileinstall.dir=./etc,\
+#	felix.fileinstall.noInitialDelay=true,\
+#	felix.fileinstall.enableConfigSave=false,\
+#	felix.fileinstall.log.level=4,\
+#	org.osgi.framework.startlevel.beginning=100,\
+
+# Only needed for karaf console
+#	karaf.systemBundlesStartLevel=0,\
+#	karaf.startLocalConsole=true,\
+#	karaf.local.roles='admin,manager,viewer,systembundles',\
+
+
+-runrequires: \
+	osgi.identity;filter:='(osgi.identity=org.apache.felix.fileinstall)',\
+	osgi.identity;filter:='(osgi.identity=org.apache.felix.gogo.command)',\
+	osgi.identity;filter:='(osgi.identity=org.ops4j.pax.logging.pax-logging-service)',\
+	osgi.identity;filter:='(osgi.identity=org.objectweb.asm.all)',\
+	osgi.identity;filter:='(osgi.identity=org.apache.felix.http.jetty)',\
+	osgi.identity;filter:='(osgi.identity=org.apache.cxf.dosgi.cxf-dosgi-provider-ws)',\
+	osgi.identity;filter:='(osgi.identity=org.apache.aries.rsa.topology-manager)',\
+	osgi.identity;filter:='(osgi.identity=org.apache.felix.gogo.shell)',\
+	osgi.identity;filter:='(&(osgi.identity=org.apache.aries.rsa.discovery.command)(version>=1.9.0))',\
+	osgi.identity;filter:='(osgi.identity=org.apache.cxf.dosgi.cxf-dosgi-provider-rs)',\
+	osgi.identity;filter:='(osgi.identity=org.apache.cxf.cxf-rt-rs-service-description-swagger)',\
+	osgi.identity;filter:='(osgi.identity=org.apache.aries.rsa.discovery.zookeeper)'
+-runbundles: \
+	org.apache.felix.configadmin;version='[1.8.8,1.8.9)',\
+	org.apache.felix.fileinstall;version='[3.5.2,3.5.3)',\
+	org.objectweb.asm.all;version='[5.0.4,5.0.5)',\
+	org.ops4j.pax.logging.pax-logging-api;version='[1.8.5,1.8.6)',\
+	org.ops4j.pax.logging.pax-logging-service;version='[1.8.5,1.8.6)',\
+	javax.servlet-api;version='[3.1.0,3.1.1)',\
+	org.apache.felix.eventadmin;version='[1.4.6,1.4.7)',\
+	org.apache.felix.http.api;version='[2.3.2,2.3.3)',\
+	org.apache.felix.http.jetty;version='[3.0.0,3.0.1)',\
+	org.apache.servicemix.bundles.wsdl4j;version='[1.6.3,1.6.4)',\
+	org.apache.felix.gogo.command;version='[0.16.0,0.16.1)',\
+	org.apache.felix.gogo.shell;version='[0.12.0,0.12.1)',\
+	org.apache.felix.gogo.runtime;version='[0.10.0,0.10.1)',\
+	org.fusesource.jansi;version='[1.13.0,1.13.1)',\
+	javax.annotation-api;version='[1.2.0,1.2.1)',\
+	org.apache.servicemix.specs.jsr339-api-2.0.1;version='[2.6.0,2.6.1)',\
+	org.apache.aries.rsa.core;version='[1.11.0,1.11.1)',\
+	org.apache.aries.rsa.discovery.command;version='[1.11.0,1.11.1)',\
+	org.apache.aries.rsa.spi;version='[1.11.0,1.11.1)',\
+	org.apache.aries.rsa.topology-manager;version='[1.11.0,1.11.1)',\
+	org.apache.cxf.cxf-core;version='[3.1.12,3.1.13)',\
+	org.apache.cxf.cxf-rt-bindings-soap;version='[3.1.12,3.1.13)',\
+	org.apache.cxf.cxf-rt-bindings-xml;version='[3.1.12,3.1.13)',\
+	org.apache.cxf.cxf-rt-databinding-aegis;version='[3.1.12,3.1.13)',\
+	org.apache.cxf.cxf-rt-databinding-jaxb;version='[3.1.12,3.1.13)',\
+	org.apache.cxf.cxf-rt-frontend-jaxrs;version='[3.1.12,3.1.13)',\
+	org.apache.cxf.cxf-rt-frontend-jaxws;version='[3.1.12,3.1.13)',\
+	org.apache.cxf.cxf-rt-frontend-simple;version='[3.1.12,3.1.13)',\
+	org.apache.cxf.cxf-rt-rs-client;version='[3.1.12,3.1.13)',\
+	org.apache.cxf.cxf-rt-transports-http;version='[3.1.12,3.1.13)',\
+	org.apache.cxf.cxf-rt-wsdl;version='[3.1.12,3.1.13)',\
+	org.apache.cxf.dosgi.cxf-dosgi-common;version='[2.3.0,2.3.1)',\
+	org.apache.cxf.dosgi.cxf-dosgi-provider-rs;version='[2.3.0,2.3.1)',\
+	org.apache.cxf.dosgi.cxf-dosgi-provider-ws;version='[2.3.0,2.3.1)',\
+	org.apache.ws.xmlschema.core;version='[2.2.2,2.2.3)',\
+	org.apache.felix.scr;version='[2.0.12,2.0.13)',\
+	com.fasterxml.jackson.core.jackson-annotations;version='[2.8.9,2.8.10)',\
+	com.fasterxml.jackson.core.jackson-core;version='[2.8.9,2.8.10)',\
+	com.fasterxml.jackson.core.jackson-databind;version='[2.8.9,2.8.10)',\
+	com.fasterxml.jackson.dataformat.jackson-dataformat-yaml;version='[2.8.9,2.8.10)',\
+	com.google.guava;version='[20.0.0,20.0.1)',\
+	io.swagger.annotations;version='[1.5.16,1.5.17)',\
+	io.swagger.core;version='[1.5.16,1.5.17)',\
+	io.swagger.jaxrs;version='[1.5.16,1.5.17)',\
+	io.swagger.models;version='[1.5.16,1.5.17)',\
+	javax.validation.api;version='[1.1.0,1.1.1)',\
+	org.apache.commons.lang3;version='[3.2.1,3.2.2)',\
+	org.apache.cxf.cxf-rt-rs-service-description-swagger;version='[3.1.12,3.1.13)',\
+	org.apache.servicemix.bundles.reflections;version='[0.9.10,0.9.11)',\
+	org.yaml.snakeyaml;version='[1.17.0,1.17.1)',\
+	org.apache.aries.rsa.discovery.local;version='[1.11.0,1.11.1)',\
+	org.apache.aries.rsa.discovery.zookeeper;version='[1.11.0,1.11.1)',\
+	org.apache.hadoop.zookeeper;version='[3.4.10,3.4.11)'
diff --git a/distribution/multi-bundle/pom.xml b/distribution/multi-bundle/pom.xml
index 9844fbb..c856e65 100644
--- a/distribution/multi-bundle/pom.xml
+++ b/distribution/multi-bundle/pom.xml
@@ -1,124 +1,272 @@
 <?xml version='1.0' encoding='UTF-8' ?>
-<!--
-  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
+<!-- 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. -->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
 
-  http://www.apache.org/licenses/LICENSE-2.0
+	<modelVersion>4.0.0</modelVersion>
+	<artifactId>cxf-dosgi-multibundle-distribution</artifactId>
+	<name>CXF DOSGi Multi-Bundle Distribution</name>
+	<url>http://cxf.apache.org</url>
 
-  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.
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+	<parent>
+		<groupId>org.apache.cxf.dosgi</groupId>
+		<artifactId>cxf-dosgi-distribution-parent</artifactId>
+		<version>2.3.0-SNAPSHOT</version>
+		<relativePath>../pom.xml</relativePath>
+	</parent>
 
-  <modelVersion>4.0.0</modelVersion>
-  <artifactId>cxf-dosgi-multibundle-distribution</artifactId>
-  <name>CXF DOSGi Multi-Bundle Distribution</name>
-  <url>http://cxf.apache.org</url>
+	<properties>
+		<dosgi.version>${project.version}</dosgi.version>
+		<topDirectoryLocation>../..</topDirectoryLocation>
+		<karaf.version>4.1.2</karaf.version>
+	</properties>
 
-  <parent>
-    <groupId>org.apache.cxf.dosgi</groupId>
-    <artifactId>cxf-dosgi-distribution-parent</artifactId>
-    <version>2.3.0-SNAPSHOT</version>
-    <relativePath>../pom.xml</relativePath>
-  </parent>
+	<dependencies>
+		<!-- Basic Felix bundles -->
+		<dependency>
+			<groupId>org.apache.felix</groupId>
+			<artifactId>org.apache.felix.framework</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.felix</groupId>
+			<artifactId>org.apache.felix.eventadmin</artifactId>
+			<version>1.4.6</version>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.felix</groupId>
+			<artifactId>org.apache.felix.configadmin</artifactId>
+			<version>1.8.8</version>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.felix</groupId>
+			<artifactId>org.apache.felix.metatype</artifactId>
+			<version>1.1.2</version>
+			<exclusions>
+				<exclusion>
+					<artifactId>kxml2</artifactId>
+					<groupId>net.sf.kxml</groupId>
+				</exclusion>
+			</exclusions>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.felix</groupId>
+			<artifactId>org.apache.felix.fileinstall</artifactId>
+			<version>3.5.2</version>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.felix</groupId>
+			<artifactId>org.apache.felix.gogo.command</artifactId>
+			<version>0.16.0</version>
+			<exclusions>
+				<exclusion>
+					<artifactId>org.osgi.core</artifactId>
+					<groupId>org.osgi</groupId>
+				</exclusion>
+				<exclusion>
+					<artifactId>org.osgi.compendium</artifactId>
+					<groupId>org.osgi</groupId>
+				</exclusion>
+				<exclusion>
+					<artifactId>
+                        org.apache.felix.bundlerepository
+                    </artifactId>
+					<groupId>org.apache.felix</groupId>
+				</exclusion>
+			</exclusions>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.felix</groupId>
+			<artifactId>org.apache.felix.gogo.runtime</artifactId>
+			<version>0.10.0</version>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.felix</groupId>
+			<artifactId>org.apache.felix.gogo.shell</artifactId>
+			<version>0.12.0</version>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.felix</groupId>
+			<artifactId>org.apache.felix.scr</artifactId>
+			<version>2.0.12</version>
+			<exclusions>
+				<exclusion>
+					<artifactId>animal-sniffer-annotations</artifactId>
+					<groupId>org.codehaus.mojo</groupId>
+				</exclusion>
+			</exclusions>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.felix</groupId>
+			<artifactId>org.apache.felix.http.jetty</artifactId>
+			<version>3.0.0</version>
+			<exclusions>
+				<exclusion>
+					<groupId>org.eclipse.jetty</groupId>
+					<artifactId>jetty-server</artifactId>
+				</exclusion>
+				<exclusion>
+					<groupId>org.eclipse.jetty.websocket</groupId>
+					<artifactId>websocket-server</artifactId>
+				</exclusion>
+				<exclusion>
+					<groupId>org.apache.felix</groupId>
+					<artifactId>org.apache.felix.http.base</artifactId>
+				</exclusion>
+			</exclusions>
+		</dependency>
 
-  <properties>
-    <dosgi.version>${project.version}</dosgi.version>
-    <topDirectoryLocation>../..</topDirectoryLocation>
-    <karaf.version>4.0.5</karaf.version>
-  </properties>
+		<dependency>
+			<groupId>org.ops4j.pax.logging</groupId>
+			<artifactId>pax-logging-service</artifactId>
+			<version>1.8.5</version>
+		</dependency>
+		<dependency>
+			<groupId>jline</groupId>
+			<artifactId>jline</artifactId>
+			<version>3.0.0.M1</version>
+		</dependency>
 
-  <build>
-    <resources>
-      <resource>
-        <directory>src/main/resources</directory>
-        <filtering>true</filtering>
-      </resource>
-    </resources>
+		<!-- rsa -->
+		<dependency>
+			<groupId>org.apache.cxf.dosgi</groupId>
+			<artifactId>cxf-dosgi-repository</artifactId>
+			<version>${project.version}</version>
+		</dependency>
 
-    <plugins>
-    <plugin>
-        <groupId>org.apache.karaf.tooling</groupId>
-        <artifactId>karaf-maven-plugin</artifactId>
-        <version>3.0.6</version>
+		<dependency>
+			<groupId>org.apache.cxf.dosgi.samples</groupId>
+			<artifactId>cxf-dosgi-samples-soap-impl</artifactId>
+			<version>${project.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.cxf.dosgi.samples</groupId>
+			<artifactId>cxf-dosgi-samples-soap-client</artifactId>
+			<version>${project.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.cxf.dosgi.samples</groupId>
+			<artifactId>cxf-dosgi-samples-rest-impl</artifactId>
+			<version>${project.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.cxf.dosgi.samples</groupId>
+			<artifactId>cxf-dosgi-samples-rest-client</artifactId>
+			<version>${project.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>io.swagger</groupId>
+			<artifactId>swagger-jaxrs</artifactId>
+			<version>1.5.16</version>
+			<exclusions>
+				<exclusion>
+					<groupId>org.reflections</groupId>
+					<artifactId>reflections</artifactId>
+				</exclusion>
+			</exclusions>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.servicemix.bundles</groupId>
+			<artifactId>org.apache.servicemix.bundles.reflections</artifactId>
+			<version>0.9.10_3</version>
+		</dependency>
+		<dependency>
+			<groupId>com.google.guava</groupId>
+			<artifactId>guava</artifactId>
+			<version>20.0</version>
+		</dependency>
+	</dependencies>
 
-        <executions>
-          <execution>
-            <id>features-add-to-repository</id>
-            <phase>generate-resources</phase>
-            <goals>
-              <goal>features-export-meta-data</goal>
-              <goal>features-add-to-repository</goal>
-            </goals>
-            <configuration>
-              <descriptors>
-                <descriptor>mvn:org.apache.karaf.features/standard/${karaf.version}/xml/features</descriptor>
-                <descriptor>mvn:org.apache.cxf.dosgi/cxf-dosgi/${project.version}/xml/features</descriptor>
-              </descriptors>
-              <features>
-              	<feature>cxf-rs-description-swagger2</feature>
-                <feature>cxf-dosgi-base</feature>
-                <feature>aries-rsa-discovery-zookeeper</feature>
-                <feature>cxf-dosgi-provider-ws</feature>
-                <feature>cxf-dosgi-provider-rs</feature>
-              </features>
-              <repository>target/distribution_bundles</repository>
-              <resolveDefinedRepositoriesRecursively>true</resolveDefinedRepositoriesRecursively>
-              <flatRepoLayout>true</flatRepoLayout>
-              <mergedFeature>true</mergedFeature>
-              <karafVersion>${karaf.version}</karafVersion>
-            </configuration>
-          </execution>
-        </executions>
-      </plugin>
-      
-      <plugin>
-        <artifactId>maven-antrun-plugin</artifactId>
-        <executions>
-          <execution>
-            <phase>package</phase>
-            <configuration>
-              <target>
-                <xslt processor="trax" in="target/features.xml" out="target/filtered-features.xml" style="src/main/xsl/filter_features.xslt" />
-                <xslt processor="trax" in="target/filtered-features.xml" out="target/distribution_configs/felix.config.properties.append" style="src/main/xsl/felix_distro_config.xslt" />
-                <xslt processor="trax" in="target/filtered-features.xml" out="target/distribution_configs/config.ini" style="src/main/xsl/equinox_distro_config.xslt" />
-              </target>
-            </configuration>
-            <goals>
-              <goal>run</goal>
-            </goals>
-          </execution>
-        </executions>
-      </plugin>
+	<build>
+		<resources>
+			<resource>
+				<directory>src/main/resources</directory>
+				<filtering>true</filtering>
+			</resource>
+		</resources>
 
-      <plugin>
-        <artifactId>maven-assembly-plugin</artifactId>
-        <executions>
-          <execution>
-            <id>make-assembly</id>
-            <phase>package</phase>
-            <goals>
-              <goal>single</goal>
-            </goals>
-            <configuration>
-              <descriptors>
-                <descriptor>./src/main/assembly/assembly.xml</descriptor>
-              </descriptors>
-            </configuration>
+		<plugins>
+			<plugin>
+				<groupId>biz.aQute.bnd</groupId>
+				<artifactId>bnd-indexer-maven-plugin</artifactId>
+				<version>3.4.0</version>
+				<configuration>
+					<includeGzip>false</includeGzip>
+					<localURLs>REQUIRED</localURLs>
+					<addMvnURLs>
+					</addMvnURLs>
+				</configuration>
+				<executions>
+					<execution>
+						<id>index</id>
+						<goals>
+							<goal>index</goal>
+						</goals>
+					</execution>
+				</executions>
+			</plugin>
+			<plugin>
+				<groupId>biz.aQute.bnd</groupId>
+				<artifactId>bnd-export-maven-plugin</artifactId>
+				<version>3.4.0</version>
+				<configuration>
+					<resolve>true</resolve>
+					<failOnChanges>false</failOnChanges>
+					<bndruns>
+						<bndrun>distro.bndrun</bndrun>
+					</bndruns>
+				</configuration>
+				<executions>
+					<execution>
+						<goals>
+							<goal>export</goal>
+						</goals>
+					</execution>
+				</executions>
+			</plugin>
+			<plugin>
+				<artifactId>maven-antrun-plugin</artifactId>
+				<executions>
+					<execution>
+						<phase>package</phase>
+						<configuration>
+							<target>
+								<unzip src="target/distro.jar" dest="target/distro-unzip" />
+							</target>
+						</configuration>
+						<goals>
+							<goal>run</goal>
+						</goals>
+					</execution>
+				</executions>
+			</plugin>
 
-          </execution>
-        </executions>
-      </plugin>
+			<plugin>
+				<artifactId>maven-assembly-plugin</artifactId>
+				<executions>
+					<execution>
+						<id>make-assembly</id>
+						<phase>package</phase>
+						<goals>
+							<goal>single</goal>
+						</goals>
+						<configuration>
+							<descriptors>
+								<descriptor>./src/main/assembly/assembly.xml</descriptor>
+							</descriptors>
+						</configuration>
+					</execution>
+				</executions>
+			</plugin>
 
-    </plugins>
-  </build>
+		</plugins>
+	</build>
 </project>
diff --git a/distribution/multi-bundle/src/main/assembly/assembly.xml b/distribution/multi-bundle/src/main/assembly/assembly.xml
index 4744815..12d0b86 100644
--- a/distribution/multi-bundle/src/main/assembly/assembly.xml
+++ b/distribution/multi-bundle/src/main/assembly/assembly.xml
@@ -28,7 +28,11 @@
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
-      <directory>target/distribution_bundles</directory>
+      <directory>target/distro-unzip/jar</directory>
+      <excludes>
+      	<exclude>org.apache.felix.framework*</exclude>
+      	<exclude>biz.aQute.launcher*</exclude>
+      </excludes>
       <outputDirectory>apache-cxf-dosgi-${dosgi.version}/dosgi_bundles</outputDirectory>
     </fileSet>
     <fileSet>
diff --git a/distribution/multi-bundle/src/main/release/README b/distribution/multi-bundle/src/main/release/README
index d87959c..b9ade0d 100644
--- a/distribution/multi-bundle/src/main/release/README
+++ b/distribution/multi-bundle/src/main/release/README
@@ -1,41 +1,19 @@
-Welcome to the Apache CXF Distributed OSGi DSW Reference Implementation
-=======================================================================
+Apache CXF Distributed OSGi
+===========================
 
+This distribution combines Aries Remote Service Admin with the CXF-DOSGi providers[2] for JAX-WS and JAX-RS.
 
-The dOSGi subproject of Apache CXF provides the Remote Services Specification version 1.0,
- Chapter 13 in the OSGi Compendium Specification, and OSGi Remote Service Admin Specification
-version 1.0, Chapter 122 in the OSGi Enterprise Specification[1].
+Getting started
+---------------
 
-This release is provided for your convenience in two distribution formats:
+* Download and extract the felix distro
+* Copy the bundles in dosgi-bundles into the bundles directory of the felix distro
+* Start felix like described in the felix readme.
 
-1. Multi-bundle distro
+    java -jar bin/felix.jar
 
-Contains the dOSGi implementation and all 3rd party dependencies as
-separate bundles within an archive. The current distribution is an
-instance of this type. The easiest way to get started is to explode
-this archive into your Felix or Equinox installation tree. Then
-append the contents of the felix.config.properties.append or
-equinox.config.ini.append snippets found in the conf directory to
-your felix.config.properties or equinox.config.ini. This will cause
-all the required bundles to be loaded on start-up. The bundles required
-for the Zookeeper-based Discovery Service implementation are also provided
-in this distribution, and similarly may be automatically loaded by
-appending the felix.discovery.config.properties.append or
-equinox.discovery.config.ini.append snippets as appropriate.
+* List available endpoints:
 
+    rsa:endpoints
 
-2. Source distro
-
-Contains the entire source tree for dOSGi.
-
-
-For more information check the CXF DOSGi web site [2]
-
-Thanks for using CXF dOSGi!
-
-Regards,
-The CXF dOSGi team.
-
-
-[1] see chapter 122 http://www.osgi.org/Download/Release4V42
 [2] http://cxf.apache.org/distributed-osgi.html
diff --git a/distribution/multi-bundle/src/main/xsl/equinox_distro_config.xslt b/distribution/multi-bundle/src/main/xsl/equinox_distro_config.xslt
deleted file mode 100644
index d7db137..0000000
--- a/distribution/multi-bundle/src/main/xsl/equinox_distro_config.xslt
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
-  <xsl:output method="text" version="1.0" encoding="UTF-8" indent="yes"/>
-<xsl:template match="/">
-# equinox config
-org.ops4j.pax.web.session.timeout=30
-
-osgi.bundles=org.eclipse.osgi.services@start, \
-../plugins/org.eclipse.equinox.console_1.0.0.v20120522-1841.jar@start, \
-../plugins/org.apache.felix.gogo.shell_0.8.0.v201110170705.jar@start, \
-../plugins/org.apache.felix.gogo.command_0.8.0.v201108120515.jar@start, \
-../plugins/org.apache.felix.gogo.runtime_0.8.0.v201108120515.jar@start, \
-<xsl:for-each select="//bundle"><xsl:sort select="@start-level" data-type="number" order="ascending"/>../dosgi_bundles/<xsl:value-of select="@name"/>@start,\
-</xsl:for-each>
-  </xsl:template>
-</xsl:transform>
-
diff --git a/distribution/multi-bundle/src/main/xsl/felix_distro_config.xslt b/distribution/multi-bundle/src/main/xsl/felix_distro_config.xslt
deleted file mode 100644
index 979cd6d..0000000
--- a/distribution/multi-bundle/src/main/xsl/felix_distro_config.xslt
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
-  <xsl:output method="text" version="1.0" encoding="UTF-8" indent="yes"/>
-  <xsl:template match="/">
-org.ops4j.pax.web.session.timeout=30
-org.osgi.framework.startlevel.beginning=200
-
-<xsl:for-each select="//bundle">
-<xsl:sort select="@start-level" data-type="number" order="ascending"/>
-<xsl:variable name="i" select="position() + count(//bundles/felix_deps) + 50"/>
-felix.auto.start.<xsl:value-of select="$i"/>=file:dosgi_bundles/<xsl:value-of select="@name"/>
-</xsl:for-each>
-
-</xsl:template>
-</xsl:transform>
diff --git a/distribution/multi-bundle/src/main/xsl/filter_features.xslt b/distribution/multi-bundle/src/main/xsl/filter_features.xslt
deleted file mode 100644
index 096c8a3..0000000
--- a/distribution/multi-bundle/src/main/xsl/filter_features.xslt
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<xsl:transform version="1.0"
-    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
-    <xsl:output method="xml" version="1.0" encoding="UTF-8"
-        indent="yes" />
-
-    <!-- Filter out undesired bundles -->
-    <xsl:template match="bundle[@artifactId='cxf-karaf-commands']"></xsl:template>
-    <xsl:template match="bundle[@artifactId='org.apache.karaf.http.core']"></xsl:template>
-    <xsl:template match="bundle[@artifactId='org.apache.aries.spifly.dynamic.bundle']"></xsl:template>
-    <xsl:template match="bundle[@groupId='org.eclipse.jetty.websocket']"></xsl:template>
-    <xsl:template match="bundle[@artifactId='org.apache.karaf.scr.command']"></xsl:template>
-    <xsl:template match="bundle[@artifactId='org.apache.felix.webconsole.plugins.ds']"></xsl:template>
-    <xsl:template match="bundle[@artifactId='org.apache.aries.rsa.discovery.command']"></xsl:template>
-    <xsl:template match="bundle[@artifactId='woodstox-core-asl']"></xsl:template>
-    <xsl:template match="bundle[@artifactId='org.apache.servicemix.specs.jaxb-api']"></xsl:template>
-    <xsl:template match="bundle[@artifactId='org.apache.servicemix.bundles.jaxb-xjc']"></xsl:template>
-    <xsl:template match="bundle[@artifactId='org.apache.servicemix.bundles.jaxb-impl']"></xsl:template>
-
-    <!-- Copy the rest unachanged -->
-    <xsl:template match="@* | node()">
-        <xsl:copy>
-          <xsl:apply-templates select="@* | node()" />
-        </xsl:copy>
-    </xsl:template>
-
-</xsl:transform>
diff --git a/itests/multi-bundle/pom.xml b/itests/multi-bundle/pom.xml
index ec923dc..8d0fe75 100644
--- a/itests/multi-bundle/pom.xml
+++ b/itests/multi-bundle/pom.xml
@@ -45,6 +45,10 @@
 
     <dependencies>
     	<dependency>
+    		<groupId>org.osgi</groupId>
+    		<artifactId>osgi.cmpn</artifactId>
+    	</dependency>
+    	<dependency>
     		<groupId>org.apache.cxf.dosgi</groupId>
     		<artifactId>cxf-dosgi-common</artifactId>
     		<version>${project.version}</version>
@@ -72,6 +76,7 @@
         <dependency>
             <groupId>org.ops4j.pax.exam</groupId>
             <artifactId>pax-exam-container-forked</artifactId>
+            <version>${exam.version}</version>
         </dependency>
         <dependency>
             <groupId>org.ops4j.pax.exam</groupId>
@@ -85,18 +90,16 @@
             <version>2.4.5</version>
         </dependency>
 
-
+<!-- 
         <dependency>
             <groupId>org.eclipse.platform</groupId>
             <artifactId>org.eclipse.osgi</artifactId>
         </dependency>
-        <!-- 
+         --> 
         <dependency>
             <groupId>org.apache.felix</groupId>
             <artifactId>org.apache.felix.framework</artifactId>
-            <scope>test</scope>
         </dependency>
-         -->
 
         <!-- CXF -->
         <dependency>
@@ -176,12 +179,6 @@
             <version>${project.version}</version>
             <scope>test</scope>
         </dependency>
-        
-        <dependency>
-            <groupId>junit</groupId>
-            <artifactId>junit</artifactId>
-            <scope>test</scope>
-        </dependency>
     </dependencies>
 
     <build>
@@ -224,18 +221,6 @@
                     </execution>
                 </executions>
             </plugin>
-
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-surefire-plugin</artifactId>
-                <configuration>
-                    <systemPropertyVariables>
-                        <!-- <org.apache.cxf.dosgi.test.debug.port>5005</org.apache.cxf.dosgi.test.debug.port> 
-                            <org.apache.cxf.dosgi.test.serviceWaitTimeout>180</org.apache.cxf.dosgi.test.serviceWaitTimeout> -->
-                        <java.util.logging.config.file>${project.build.directory}/test-classes/logging.properties</java.util.logging.config.file>
-                    </systemPropertyVariables>
-                </configuration>
-            </plugin>
             
         </plugins>
     </build>
diff --git a/itests/multi-bundle/src/test/java/org/apache/cxf/dosgi/itests/multi/AbstractDosgiTest.java b/itests/multi-bundle/src/test/java/org/apache/cxf/dosgi/itests/multi/AbstractDosgiTest.java
index 01975bf..40eb113 100644
--- a/itests/multi-bundle/src/test/java/org/apache/cxf/dosgi/itests/multi/AbstractDosgiTest.java
+++ b/itests/multi-bundle/src/test/java/org/apache/cxf/dosgi/itests/multi/AbstractDosgiTest.java
@@ -19,7 +19,6 @@
 package org.apache.cxf.dosgi.itests.multi;
 
 import static org.ops4j.pax.exam.CoreOptions.composite;
-import static org.ops4j.pax.exam.CoreOptions.frameworkStartLevel;
 import static org.ops4j.pax.exam.CoreOptions.mavenBundle;
 import static org.ops4j.pax.exam.CoreOptions.systemProperty;
 import static org.ops4j.pax.exam.cm.ConfigurationAdminOptions.newConfiguration;
@@ -287,26 +286,19 @@
 
 
     protected static Option basicTestOptions() throws Exception {
-        return composite(MultiBundleTools.getDistro(), //
-                         CoreOptions.junitBundles(), //
+        return composite(CoreOptions.junitBundles(), //
+                         MultiBundleTools.getDistro(), //
                          
-                         // Enable JAXB from JRE
-                         CoreOptions.bootDelegationPackages("com.sun.*"), 
-                         CoreOptions.systemPackages(
-                                                   "javax.xml.bind.annotation;version=2.2.1",
-                                                   "javax.xml.bind;version=2.2.1"), 
-
+                         systemProperty("org.osgi.service.http.port").value("" + HTTP_PORT),
                          systemProperty("org.ops4j.pax.logging.DefaultServiceLog.level").value("INFO"), //
                          systemProperty("pax.exam.osgi.unresolved.fail").value("true"), //
                          systemProperty("org.apache.cxf.stax.allowInsecureParser").value("true"), //
                          systemProperty("rsa.export.policy.filter").value("(name=cxf)"), //
                          configHttpService(HTTP_HOST, HTTP_PORT),
-                         configLogging(),
-                         frameworkStartLevel(100)
+                         configLogging()
         );
     }
 
-
     protected static VMOption debug() {
         return CoreOptions.vmOption("-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005");
     }
diff --git a/itests/multi-bundle/src/test/java/org/apache/cxf/dosgi/itests/multi/MultiBundleTools.java b/itests/multi-bundle/src/test/java/org/apache/cxf/dosgi/itests/multi/MultiBundleTools.java
index f7d43be..4150fda 100644
--- a/itests/multi-bundle/src/test/java/org/apache/cxf/dosgi/itests/multi/MultiBundleTools.java
+++ b/itests/multi-bundle/src/test/java/org/apache/cxf/dosgi/itests/multi/MultiBundleTools.java
@@ -19,15 +19,11 @@
 package org.apache.cxf.dosgi.itests.multi;
 
 import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.IOException;
+import java.io.FilenameFilter;
 import java.net.URL;
 import java.util.ArrayList;
+import java.util.Collection;
 import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-import java.util.TreeMap;
 
 import org.ops4j.pax.exam.CoreOptions;
 import org.ops4j.pax.exam.Option;
@@ -36,33 +32,20 @@
 
     private MultiBundleTools() {
     }
-    
-    private static Properties getProps(File distroDir) throws FileNotFoundException, IOException {
-        Properties p = new Properties();
-        File confFile = new File(distroDir, "conf/felix.config.properties.append");
-        p.load(new FileInputStream(confFile));
-        return p;
-    }
 
-    private static int getDistroBundles(File distroDir,
-                                        Properties props, 
-                                        Map<Integer, String> bundles) throws Exception {
-        int startLevel = Integer.parseInt(props.getProperty("org.osgi.framework.startlevel.beginning"));
-        for (int i = 0; i <= startLevel; i++) {
-            String val = props.getProperty("felix.auto.start." + i);
-            if (val != null) {
-                if (val.startsWith("file:")) {
-                    File fullDir = new File(distroDir, val.substring("file:".length()));
-                    bundles.put(i, fullDir.toURI().toASCIIString());
-                } else {
-                    if (!val.contains("org.osgi.compendium")) {
-                        // We're skipping that one as it's pulled in explicitly in the test
-                        bundles.put(i, val);
-                    }
+    private static Collection<String> getDistroBundles(File distroDir) throws Exception {
+        List<String> bundles = new ArrayList<>();
+        File bundlesDir = new File(distroDir, "dosgi_bundles");
+        File[] files = bundlesDir.listFiles(new FilenameFilter() {
+                public boolean accept(File dir, String name) {
+                    return name.toLowerCase().endsWith(".jar");
                 }
             }
+        );
+        for (File file : files) {
+            bundles.add(file.toURI().toASCIIString());
         }
-        return startLevel + 1; // Add 1 to start level to be on the safe side
+        return bundles;
     }
 
     private static File getRootDirectory() {
@@ -74,29 +57,16 @@
         return curBase.getParentFile().getParentFile();
     }
 
-    private static Option[] getDistroBundleOptions() throws Exception {
-        Map<Integer, String> bundles = new TreeMap<Integer, String>();
+    public static Option getDistro() throws Exception {
         File root = getRootDirectory();
         File depRoot = new File(root, "target/dependency");
         File distroDir = depRoot.listFiles()[0];
-        Properties props = getProps(distroDir);
-        getDistroBundles(distroDir, props, bundles);
+        Collection<String> bundles = getDistroBundles(distroDir);
         List<Option> opts = new ArrayList<Option>();
-        
-        /*
-        String sysPackagesValue = props.getProperty("org.osgi.framework.system.packages");
-        opts.add(CoreOptions.frameworkProperty("org.osgi.framework.system.packages")
-                 .value(sysPackagesValue));
-        */
-
-        for (Map.Entry<Integer, String> entry : bundles.entrySet()) {
-            String bundleUri = entry.getValue();
+        for (String bundleUri : bundles) {
             opts.add(CoreOptions.bundle(bundleUri));
         }
-        return opts.toArray(new Option[opts.size()]);
+        return CoreOptions.composite(opts.toArray(new Option[opts.size()]));
     }
 
-    public static Option getDistro() throws Exception {
-        return CoreOptions.composite(getDistroBundleOptions());
-    }
 }
diff --git a/itests/multi-bundle/src/test/java/org/apache/cxf/dosgi/itests/multi/TestImportService.java b/itests/multi-bundle/src/test/java/org/apache/cxf/dosgi/itests/multi/TestImportService.java
index 21f49d9..af840f1 100644
--- a/itests/multi-bundle/src/test/java/org/apache/cxf/dosgi/itests/multi/TestImportService.java
+++ b/itests/multi-bundle/src/test/java/org/apache/cxf/dosgi/itests/multi/TestImportService.java
@@ -92,7 +92,7 @@
         System.out.println("Publishing service");
         JaxWsServerFactoryBean factory = new JaxWsServerFactoryBean();
         factory.setServiceClass(TaskService.class);
-        factory.setAddress("http://localhost:9191/taskservice");
+        factory.setAddress("/taskservice");
         factory.setServiceBean(new DummyTaskServiceImpl());
         return factory.create();
 
diff --git a/itests/multi-bundle/src/test/resources/rs-test1.xml b/itests/multi-bundle/src/test/resources/rs-test1.xml
index c35592c..60c449d 100644
--- a/itests/multi-bundle/src/test/resources/rs-test1.xml
+++ b/itests/multi-bundle/src/test/resources/rs-test1.xml
@@ -21,7 +21,7 @@
         <value>org.apache.cxf.dosgi.samples.soap.TaskService</value>
       </array>
     </property>
-    <property name="endpoint.id">http://localhost:9191/taskservice</property>
+    <property name="endpoint.id">http://localhost:8989/cxf/taskservice</property>
     <property name="service.imported.configs">org.apache.cxf.ws</property>
   </endpoint-description>
 </endpoint-descriptions>
diff --git a/parent/pom.xml b/parent/pom.xml
index 3df6250..2c6ab61 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -27,30 +27,17 @@
         <!-- portable text resource processing -->
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 
-        <osgi.version>5.0.0</osgi.version>
+        <osgi.version>6.0.0</osgi.version>
         <osgi.compendium.version>5.0.0</osgi.compendium.version>
         <aries.rsa.version>1.11.0</aries.rsa.version>
         <cxf.version>3.1.12</cxf.version>
-        <felix.version>5.6.4</felix.version>
+        <felix.version>5.6.8</felix.version>
         <zookeeper.version>3.4.8</zookeeper.version>
-        <remote.service.admin.interfaces.version>1.0.0</remote.service.admin.interfaces.version>
-        <servicemix.specs.version>2.6.0</servicemix.specs.version>
-        <pax.web.version>1.0.11</pax.web.version>
-        <pax.logging.version>1.7.0</pax.logging.version>
         <servlet.version>3.0</servlet.version>
-        <log4j.version>1.2.17</log4j.version>
-        <jetty.version>9.3.7.v20160115</jetty.version>
-        <xmlschema.bundle.version>2.2.1</xmlschema.bundle.version>
-        <xmlresolver.bundle.version>1.2_5</xmlresolver.bundle.version>
-        <neethi.bundle.version>3.0.3</neethi.bundle.version>
-        <wsdl4j.bundle.version>1.6.2_6</wsdl4j.bundle.version>
-        <xmlsec.version>2.0.5</xmlsec.version>
-        <asm.bundle.version>3.3.1_1</asm.bundle.version>
-        <commons.pool.bundle.version>1.5.4_1</commons.pool.bundle.version>
-        <woodstox.bundle.version>4.4.1</woodstox.bundle.version>
-        <jaxbimpl.bundle.version>2.2.1.1_2</jaxbimpl.bundle.version>
+        <servicemix.specs.version>2.6.0</servicemix.specs.version>
         <slf4j.version>1.7.14</slf4j.version>
-        <exam.version>4.8.0</exam.version>
+        <exam.version>4.11.0</exam.version>
+
         <baseline.skip>true</baseline.skip>
         <topDirectoryLocation>..</topDirectoryLocation>
     </properties>
@@ -59,12 +46,12 @@
         <dependencies>
             <dependency>
                 <groupId>org.osgi</groupId>
-                <artifactId>org.osgi.core</artifactId>
+                <artifactId>osgi.core</artifactId>
                 <version>${osgi.version}</version>
             </dependency>
             <dependency>
                 <groupId>org.osgi</groupId>
-                <artifactId>org.osgi.compendium</artifactId>
+                <artifactId>osgi.cmpn</artifactId>
                 <version>${osgi.compendium.version}</version>
             </dependency>
             <dependency>
@@ -161,15 +148,44 @@
         </dependency>
         <dependency>
             <groupId>org.osgi</groupId>
-            <artifactId>org.osgi.core</artifactId>
+            <artifactId>osgi.core</artifactId>
             <scope>provided</scope>
         </dependency>
         <dependency>
             <groupId>org.osgi</groupId>
-            <artifactId>org.osgi.compendium</artifactId>
+            <artifactId>org.osgi.service.component</artifactId>
+            <version>1.3.0</version>
             <scope>provided</scope>
         </dependency>
+        
+        <dependency>
+            <groupId>org.osgi</groupId>
+            <artifactId>org.osgi.service.component.annotations</artifactId>
+            <version>1.3.0</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+        	<groupId>org.osgi</groupId>
+        	<artifactId>org.osgi.service.http</artifactId>
+        	<version>1.2.1</version>
+        	<scope>provided</scope>
+        </dependency>
+        
+        <!-- Just for the remote service admin spec -->
+        <dependency>
+        	<groupId>org.apache.aries.rsa</groupId>
+        	<artifactId>org.apache.aries.rsa.core</artifactId>
+        	<version>1.11.0</version>
+        </dependency>
+        
 
+        <!-- 
+        <dependency>
+            <groupId>org.osgi</groupId>
+            <artifactId>osgi.cmpn</artifactId>
+            <scope>provided</scope>
+        </dependency>
+ -->
         <dependency>
             <groupId>org.apache.aries.rsa</groupId>
             <artifactId>org.apache.aries.rsa.spi</artifactId>
diff --git a/samples/repository/pom.xml b/samples/repository/pom.xml
index e5b6629..0f4ac82 100644
--- a/samples/repository/pom.xml
+++ b/samples/repository/pom.xml
@@ -14,7 +14,6 @@
         <dependency>
             <groupId>org.apache.felix</groupId>
             <artifactId>org.apache.felix.framework</artifactId>
-            <version>5.4.0</version>
         </dependency>
         <dependency>
             <groupId>org.apache.felix</groupId>
@@ -42,44 +41,6 @@
             <artifactId>org.apache.felix.fileinstall</artifactId>
             <version>3.5.2</version>
         </dependency>
-        <!-- 
-        <dependency>
-            <groupId>org.apache.felix</groupId>
-            <artifactId>org.apache.felix.gogo.command</artifactId>
-            <version>0.17.0-SNAPSHOT</version>
-            <exclusions>
-                <exclusion>
-                    <artifactId>org.osgi.core</artifactId>
-                    <groupId>org.osgi</groupId>
-                </exclusion>
-                <exclusion>
-                    <artifactId>org.osgi.compendium</artifactId>
-                    <groupId>org.osgi</groupId>
-                </exclusion>
-                <exclusion>
-                    <artifactId>
-                        org.apache.felix.bundlerepository
-                    </artifactId>
-                    <groupId>org.apache.felix</groupId>
-                </exclusion>
-            </exclusions>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.felix</groupId>
-            <artifactId>org.apache.felix.gogo.jline</artifactId>
-            <version>0.1.0-SNAPSHOT</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.felix</groupId>
-            <artifactId>org.apache.felix.gogo.runtime</artifactId>
-            <version>0.17.0-SNAPSHOT</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.felix</groupId>
-            <artifactId>org.apache.felix.gogo.shell</artifactId>
-            <version>0.13.0-SNAPSHOT</version>
-        </dependency>
-         -->
         <dependency>
             <groupId>org.apache.felix</groupId>
             <artifactId>org.apache.felix.gogo.command</artifactId>
@@ -114,7 +75,7 @@
         <dependency>
             <groupId>org.apache.felix</groupId>
             <artifactId>org.apache.felix.scr</artifactId>
-            <version>2.0.4</version>
+            <version>2.0.12</version>
             <exclusions>
                 <exclusion>
                     <artifactId>animal-sniffer-annotations</artifactId>
@@ -189,7 +150,7 @@
             <plugin>
                 <groupId>biz.aQute.bnd</groupId>
                 <artifactId>bnd-indexer-maven-plugin</artifactId>
-                <version>3.2.0</version>
+                <version>3.3.0</version>
                 <configuration>
                     <localURLs>REQUIRED</localURLs>
                 </configuration>
diff --git a/samples/rest/impl/pom.xml b/samples/rest/impl/pom.xml
index 3282da1..8347d30 100644
--- a/samples/rest/impl/pom.xml
+++ b/samples/rest/impl/pom.xml
@@ -47,7 +47,6 @@
             <groupId>org.apache.cxf</groupId>
             <artifactId>cxf-rt-rs-service-description-swagger</artifactId>
             <version>${cxf.version}</version>
-            <scope>provided</scope>
         </dependency>
     </dependencies>
 
diff --git a/samples/rest/pom.xml b/samples/rest/pom.xml
index b055cf1..39d9b5e 100644
--- a/samples/rest/pom.xml
+++ b/samples/rest/pom.xml
@@ -33,12 +33,12 @@
     <dependencies>
         <dependency>
             <groupId>org.osgi</groupId>
-            <artifactId>org.osgi.core</artifactId>
+            <artifactId>osgi.core</artifactId>
             <scope>provided</scope>
         </dependency>
         <dependency>
             <groupId>org.osgi</groupId>
-            <artifactId>org.osgi.compendium</artifactId>
+            <artifactId>osgi.cmpn</artifactId>
             <scope>provided</scope>
         </dependency>
     </dependencies>
diff --git a/samples/soap/pom.xml b/samples/soap/pom.xml
index 57e9108..c113fd2 100644
--- a/samples/soap/pom.xml
+++ b/samples/soap/pom.xml
@@ -31,12 +31,12 @@
     <dependencies>
         <dependency>
             <groupId>org.osgi</groupId>
-            <artifactId>org.osgi.core</artifactId>
+            <artifactId>osgi.core</artifactId>
             <scope>provided</scope>
         </dependency>
         <dependency>
             <groupId>org.osgi</groupId>
-            <artifactId>org.osgi.compendium</artifactId>
+            <artifactId>osgi.cmpn</artifactId>
             <scope>provided</scope>
         </dependency>
     </dependencies>
diff --git a/samples/soap/soap.bndrun b/samples/soap/soap.bndrun
index 5ef5063..3331134 100644
--- a/samples/soap/soap.bndrun
+++ b/samples/soap/soap.bndrun
@@ -37,8 +37,8 @@
 	osgi.identity;filter:='(osgi.identity=org.apache.aries.rsa.topology-manager)',\
 	osgi.identity;filter:='(osgi.identity=org.apache.felix.gogo.shell)',\
 	osgi.identity;filter:='(&(osgi.identity=org.apache.aries.rsa.discovery.command)(version>=1.9.0))',\
-	osgi.identity;filter:='(osgi.identity=org.apache.cxf.dosgi.samples.cxf-dosgi-samples-rest-impl)',\
-	osgi.identity;filter:='(osgi.identity=org.apache.cxf.dosgi.cxf-dosgi-provider-rs)'
+	osgi.identity;filter:='(osgi.identity=org.apache.cxf.dosgi.cxf-dosgi-provider-rs)',\
+	osgi.identity;filter:='(osgi.identity=org.apache.cxf.dosgi.samples.cxf-dosgi-samples-soap-impl)'
 -runbundles: \
 	org.apache.felix.configadmin;version='[1.8.8,1.8.9)',\
 	org.apache.felix.fileinstall;version='[3.5.2,3.5.3)',\
@@ -49,32 +49,32 @@
 	org.apache.felix.eventadmin;version='[1.4.6,1.4.7)',\
 	org.apache.felix.http.api;version='[2.3.2,2.3.3)',\
 	org.apache.felix.http.jetty;version='[3.0.0,3.0.1)',\
-	org.apache.cxf.cxf-core;version='[3.1.7,3.1.8)',\
-	org.apache.cxf.cxf-rt-bindings-soap;version='[3.1.7,3.1.8)',\
-	org.apache.cxf.cxf-rt-bindings-xml;version='[3.1.7,3.1.8)',\
-	org.apache.cxf.cxf-rt-databinding-aegis;version='[3.1.7,3.1.8)',\
-	org.apache.cxf.cxf-rt-databinding-jaxb;version='[3.1.7,3.1.8)',\
-	org.apache.cxf.cxf-rt-frontend-jaxws;version='[3.1.7,3.1.8)',\
-	org.apache.cxf.cxf-rt-frontend-simple;version='[3.1.7,3.1.8)',\
-	org.apache.cxf.cxf-rt-transports-http;version='[3.1.7,3.1.8)',\
-	org.apache.cxf.cxf-rt-wsdl;version='[3.1.7,3.1.8)',\
 	org.apache.servicemix.bundles.wsdl4j;version='[1.6.3,1.6.4)',\
-	org.apache.ws.xmlschema.core;version='[2.2.1,2.2.2)',\
-	org.apache.aries.rsa.core;version='[1.9.0,1.9.1)',\
-	org.apache.aries.rsa.spi;version='[1.9.0,1.9.1)',\
-	org.apache.aries.rsa.topology-manager;version='[1.9.0,1.9.1)',\
 	org.apache.felix.gogo.command;version='[0.16.0,0.16.1)',\
 	org.apache.felix.gogo.shell;version='[0.12.0,0.12.1)',\
-	org.apache.felix.scr;version='[2.0.4,2.0.5)',\
 	org.apache.felix.gogo.runtime;version='[0.10.0,0.10.1)',\
-	org.apache.aries.rsa.discovery.command;version='[1.9.0,1.9.1)',\
 	org.fusesource.jansi;version='[1.13.0,1.13.1)',\
 	javax.annotation-api;version='[1.2.0,1.2.1)',\
 	org.apache.servicemix.specs.jsr339-api-2.0.1;version='[2.6.0,2.6.1)',\
-	org.apache.cxf.cxf-rt-frontend-jaxrs;version='[3.1.7,3.1.8)',\
-	org.apache.cxf.cxf-rt-rs-client;version='[3.1.7,3.1.8)',\
-	org.apache.cxf.dosgi.cxf-dosgi-common;version='[2.1.0,2.1.1)',\
-	org.apache.cxf.dosgi.cxf-dosgi-provider-rs;version='[2.1.0,2.1.1)',\
-	org.apache.cxf.dosgi.cxf-dosgi-provider-ws;version='[2.1.0,2.1.1)',\
-	org.apache.cxf.dosgi.samples.cxf-dosgi-samples-rest-api;version='[2.1.0,2.1.1)',\
-	org.apache.cxf.dosgi.samples.cxf-dosgi-samples-rest-impl;version='[2.1.0,2.1.1)'
\ No newline at end of file
+	org.apache.aries.rsa.core;version='[1.11.0,1.11.1)',\
+	org.apache.aries.rsa.discovery.command;version='[1.11.0,1.11.1)',\
+	org.apache.aries.rsa.spi;version='[1.11.0,1.11.1)',\
+	org.apache.aries.rsa.topology-manager;version='[1.11.0,1.11.1)',\
+	org.apache.cxf.cxf-core;version='[3.1.12,3.1.13)',\
+	org.apache.cxf.cxf-rt-bindings-soap;version='[3.1.12,3.1.13)',\
+	org.apache.cxf.cxf-rt-bindings-xml;version='[3.1.12,3.1.13)',\
+	org.apache.cxf.cxf-rt-databinding-aegis;version='[3.1.12,3.1.13)',\
+	org.apache.cxf.cxf-rt-databinding-jaxb;version='[3.1.12,3.1.13)',\
+	org.apache.cxf.cxf-rt-frontend-jaxrs;version='[3.1.12,3.1.13)',\
+	org.apache.cxf.cxf-rt-frontend-jaxws;version='[3.1.12,3.1.13)',\
+	org.apache.cxf.cxf-rt-frontend-simple;version='[3.1.12,3.1.13)',\
+	org.apache.cxf.cxf-rt-rs-client;version='[3.1.12,3.1.13)',\
+	org.apache.cxf.cxf-rt-transports-http;version='[3.1.12,3.1.13)',\
+	org.apache.cxf.cxf-rt-wsdl;version='[3.1.12,3.1.13)',\
+	org.apache.cxf.dosgi.cxf-dosgi-common;version='[2.3.0,2.3.1)',\
+	org.apache.cxf.dosgi.cxf-dosgi-provider-rs;version='[2.3.0,2.3.1)',\
+	org.apache.cxf.dosgi.cxf-dosgi-provider-ws;version='[2.3.0,2.3.1)',\
+	org.apache.ws.xmlschema.core;version='[2.2.2,2.2.3)',\
+	org.apache.cxf.dosgi.samples.cxf-dosgi-samples-soap-api;version='[2.3.0,2.3.1)',\
+	org.apache.cxf.dosgi.samples.cxf-dosgi-samples-soap-impl;version='[2.3.0,2.3.1)',\
+	org.apache.felix.scr;version='[2.0.12,2.0.13)'
\ No newline at end of file
diff --git a/samples/ssl/pom.xml b/samples/ssl/pom.xml
index d42faa0..8097fb0 100644
--- a/samples/ssl/pom.xml
+++ b/samples/ssl/pom.xml
@@ -34,12 +34,12 @@
     <dependencies>
         <dependency>
             <groupId>org.osgi</groupId>
-            <artifactId>org.osgi.core</artifactId>
+            <artifactId>osgi.core</artifactId>
             <scope>provided</scope>
         </dependency>
         <dependency>
             <groupId>org.osgi</groupId>
-            <artifactId>org.osgi.compendium</artifactId>
+            <artifactId>osgi.cmpn</artifactId>
             <scope>provided</scope>
         </dependency>
     </dependencies>
