diff --git a/activemq/activemq-osgi/pom.xml b/activemq/activemq-osgi/pom.xml
index 58aa916..ebe33b1 100644
--- a/activemq/activemq-osgi/pom.xml
+++ b/activemq/activemq-osgi/pom.xml
@@ -1,6 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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">
+<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">
 
     <!--
 
@@ -25,13 +23,13 @@
     <parent>
 	    <groupId>org.apache.servicemix.activemq</groupId>
 	    <artifactId>activemq</artifactId>
-        <version>4.0-m1-SNAPSHOT</version>
+        <version>4.0-m1</version>
     </parent>
 
     <groupId>org.apache.servicemix.activemq</groupId>
     <artifactId>org.apache.servicemix.activemq</artifactId>
     <packaging>bundle</packaging>
-    <version>4.0-m1-SNAPSHOT</version>
+    <version>4.0-m1</version>
     <name>Apache ServiceMix Features :: ActiveMQ</name>
     
     <properties>
@@ -117,7 +115,7 @@
 	                        org.jencks.amqpool*,
 	                        org.apache.servicemix.activemq*,
                         </Private-Package>
-                        <Export-Package></Export-Package>
+                        <Export-Package />
                         <Spring-Context>*;publish-context:=false;create-asynchronously:=true</Spring-Context>
                     </instructions>
                 </configuration>
@@ -126,4 +124,4 @@
     </build>
 
 
-</project>
+</project>
\ No newline at end of file
diff --git a/activemq/pom.xml b/activemq/pom.xml
index 5fbd75b..f8eabcc 100644
--- a/activemq/pom.xml
+++ b/activemq/pom.xml
@@ -24,13 +24,13 @@
     <parent>
         <groupId>org.apache.servicemix.features</groupId>
         <artifactId>features</artifactId>
-        <version>4.0-m1-SNAPSHOT</version>
+        <version>4.0-m1</version>
     </parent>
 
     <groupId>org.apache.servicemix.activemq</groupId>
     <artifactId>activemq</artifactId>
     <packaging>pom</packaging>
-    <version>4.0-m1-SNAPSHOT</version>
+    <version>4.0-m1</version>
     <name>Apache ServiceMix Features :: ActiveMQ</name>
 
     <modules>
diff --git a/assembly/pom.xml b/assembly/pom.xml
index 4c9489c..8b85c81 100644
--- a/assembly/pom.xml
+++ b/assembly/pom.xml
@@ -24,13 +24,13 @@
     <parent>
         <groupId>org.apache.servicemix.features</groupId>
         <artifactId>features</artifactId>
-        <version>4.0-m1-SNAPSHOT</version>
+        <version>4.0-m1</version>
     </parent>
 
     <groupId>org.apache.servicemix.features</groupId>
     <artifactId>apache-servicemix</artifactId>
     <packaging>pom</packaging>
-    <version>4.0-m1-SNAPSHOT</version>
+    <version>4.0-m1</version>
     <name>Apache ServiceMix Features :: Assembly</name>
 
     <dependencies>
diff --git a/camel/bundles/jaxb-api/pom.xml b/camel/bundles/jaxb-api/pom.xml
index 1326c58..475efef 100644
--- a/camel/bundles/jaxb-api/pom.xml
+++ b/camel/bundles/jaxb-api/pom.xml
@@ -1,61 +1,59 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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">
-
-    <!--
-
-        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.
-    -->
-
-    <modelVersion>4.0.0</modelVersion>
-
-    <parent>
-        <groupId>org.apache.servicemix.camel.bundles</groupId>
-        <artifactId>bundles</artifactId>
-        <version>4.0-m1-SNAPSHOT</version>
-    </parent>
-
-    <groupId>org.apache.servicemix.bundles</groupId>
-    <artifactId>${pom.groupId}.${pkgArtifactId}-${pkgVersion}</artifactId>
-    <version>4.0-m1-SNAPSHOT</version>
-    <packaging>bundle</packaging>
-    <name>Apache ServiceMix OSGI Common Bundles: ${pkgArtifactId}</name>
-    <description>
-        This bundle simply wraps ${pkgArtifactId}-${pkgVersion}.jar.
-    </description>
-
-    <properties>
-        <pkgArtifactId>jaxb-api</pkgArtifactId>
-        <pkgVersion>${jaxb.api.version}</pkgVersion>
-        <servicemix.osgi.export.pkg>javax.xml.bind*</servicemix.osgi.export.pkg>
-        <servicemix.osgi.import.pkg>javax.xml.stream*;resolution:=optional,*</servicemix.osgi.import.pkg>
-    </properties>
-
-    <dependencies>
-        <dependency>
-            <groupId>javax.xml.bind</groupId>
-            <artifactId>${pkgArtifactId}</artifactId>
-            <version>${pkgVersion}</version>
-            <optional>true</optional>
-        </dependency>
-        <dependency>
-            <groupId>junit</groupId>
-            <artifactId>junit</artifactId>
-            <version>${junit.version}</version>
-            <scope>test</scope>
-        </dependency>
-    </dependencies>
-</project>
+<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">
+
+    <!--
+
+        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.
+    -->
+
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.apache.servicemix.camel.bundles</groupId>
+        <artifactId>bundles</artifactId>
+        <version>4.0-m1</version>
+    </parent>
+
+    <groupId>org.apache.servicemix.bundles</groupId>
+    <artifactId>${pom.groupId}.${pkgArtifactId}-${pkgVersion}</artifactId>
+    <version>4.0-m1</version>
+    <packaging>bundle</packaging>
+    <name>Apache ServiceMix OSGI Common Bundles: ${pkgArtifactId}</name>
+    <description>
+        This bundle simply wraps ${pkgArtifactId}-${pkgVersion}.jar.
+    </description>
+
+    <properties>
+        <pkgArtifactId>jaxb-api</pkgArtifactId>
+        <pkgVersion>${jaxb.api.version}</pkgVersion>
+        <servicemix.osgi.export.pkg>javax.xml.bind*</servicemix.osgi.export.pkg>
+        <servicemix.osgi.import.pkg>javax.xml.stream*;resolution:=optional,*</servicemix.osgi.import.pkg>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>javax.xml.bind</groupId>
+            <artifactId>${pkgArtifactId}</artifactId>
+            <version>${pkgVersion}</version>
+            <optional>true</optional>
+        </dependency>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <version>${junit.version}</version>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+</project>
\ No newline at end of file
diff --git a/camel/bundles/jaxb-impl/pom.xml b/camel/bundles/jaxb-impl/pom.xml
index 13bb2d6..1f4f0a2 100644
--- a/camel/bundles/jaxb-impl/pom.xml
+++ b/camel/bundles/jaxb-impl/pom.xml
@@ -1,70 +1,68 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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">
-
-    <!--
-
-        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.
-    -->
-
-    <modelVersion>4.0.0</modelVersion>
-
-    <parent>
-        <groupId>org.apache.servicemix.camel.bundles</groupId>
-        <artifactId>bundles</artifactId>
-        <version>4.0-m1-SNAPSHOT</version>
-    </parent>
-
-    <groupId>org.apache.servicemix.bundles</groupId>
-    <artifactId>${pom.groupId}.${pkgArtifactId}-${pkgVersion}</artifactId>
-    <version>4.0-m1-SNAPSHOT</version>
-    <packaging>bundle</packaging>
-    <name>Apache ServiceMix OSGI Common Bundles: ${pkgArtifactId}</name>
-    <description>
-        This bundle simply wraps ${pkgArtifactId}-${pkgVersion}.jar.
-    </description>
-
-    <properties>
-        <pkgArtifactId>jaxb-impl</pkgArtifactId>
-        <pkgVersion>${jaxb.impl.version}</pkgVersion>
-        <servicemix.osgi.export.pkg>
-            com.sun.xml.bind*,
-            com.sun.istack*,
-            com.sun.xml.txw2*
-        </servicemix.osgi.export.pkg>
-        <servicemix.osgi.import.pkg>
-            javax.xml.stream*;resolution:=optional,
-            com.sun.xml.fastinfoset*;resolution:=optional,
-            org.jvnet.staxex*;resolution:=optional,
-	        *
-        </servicemix.osgi.import.pkg>
-    </properties>
-
-    <dependencies>
-        <dependency>
-            <groupId>com.sun.xml.bind</groupId>
-            <artifactId>${pkgArtifactId}</artifactId>
-            <version>${pkgVersion}</version>
-            <optional>true</optional>
-        </dependency>
-        <dependency>
-            <groupId>junit</groupId>
-            <artifactId>junit</artifactId>
-            <version>${junit.version}</version>
-            <scope>test</scope>
-        </dependency>
-    </dependencies>
-</project>
+<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">
+
+    <!--
+
+        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.
+    -->
+
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.apache.servicemix.camel.bundles</groupId>
+        <artifactId>bundles</artifactId>
+        <version>4.0-m1</version>
+    </parent>
+
+    <groupId>org.apache.servicemix.bundles</groupId>
+    <artifactId>${pom.groupId}.${pkgArtifactId}-${pkgVersion}</artifactId>
+    <version>4.0-m1</version>
+    <packaging>bundle</packaging>
+    <name>Apache ServiceMix OSGI Common Bundles: ${pkgArtifactId}</name>
+    <description>
+        This bundle simply wraps ${pkgArtifactId}-${pkgVersion}.jar.
+    </description>
+
+    <properties>
+        <pkgArtifactId>jaxb-impl</pkgArtifactId>
+        <pkgVersion>${jaxb.impl.version}</pkgVersion>
+        <servicemix.osgi.export.pkg>
+            com.sun.xml.bind*,
+            com.sun.istack*,
+            com.sun.xml.txw2*
+        </servicemix.osgi.export.pkg>
+        <servicemix.osgi.import.pkg>
+            javax.xml.stream*;resolution:=optional,
+            com.sun.xml.fastinfoset*;resolution:=optional,
+            org.jvnet.staxex*;resolution:=optional,
+	        *
+        </servicemix.osgi.import.pkg>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>com.sun.xml.bind</groupId>
+            <artifactId>${pkgArtifactId}</artifactId>
+            <version>${pkgVersion}</version>
+            <optional>true</optional>
+        </dependency>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <version>${junit.version}</version>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+</project>
\ No newline at end of file
diff --git a/camel/bundles/pom.xml b/camel/bundles/pom.xml
index effb7af..3f1577a 100644
--- a/camel/bundles/pom.xml
+++ b/camel/bundles/pom.xml
@@ -23,13 +23,13 @@
     <parent>
         <groupId>org.apache.servicemix.camel</groupId>
         <artifactId>camel</artifactId>
-        <version>4.0-m1-SNAPSHOT</version>
+        <version>4.0-m1</version>
     </parent>
 
     <groupId>org.apache.servicemix.camel.bundles</groupId>
     <artifactId>bundles</artifactId>
     <packaging>pom</packaging>
-    <version>4.0-m1-SNAPSHOT</version>
+    <version>4.0-m1</version>
     <name>Apache ServiceMix OSGI Common Bundles</name>
 
     <modules>
diff --git a/camel/pom.xml b/camel/pom.xml
index 8381ccd..e2c2a0e 100644
--- a/camel/pom.xml
+++ b/camel/pom.xml
@@ -24,13 +24,13 @@
     <parent>
         <groupId>org.apache.servicemix.features</groupId>
         <artifactId>features</artifactId>
-        <version>4.0-m1-SNAPSHOT</version>
+        <version>4.0-m1</version>
     </parent>
 
     <groupId>org.apache.servicemix.camel</groupId>
     <artifactId>camel</artifactId>
     <packaging>pom</packaging>
-    <version>4.0-m1-SNAPSHOT</version>
+    <version>4.0-m1</version>
     <name>Apache ServiceMix Features :: Camel</name>
 
     <modules>
diff --git a/camel/servicemix-camel/pom.xml b/camel/servicemix-camel/pom.xml
index 60d16b1..a4a3301 100644
--- a/camel/servicemix-camel/pom.xml
+++ b/camel/servicemix-camel/pom.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<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">
+<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">
 
     <!--
 
@@ -25,13 +24,13 @@
     <parent>
         <groupId>org.apache.servicemix.camel</groupId>
         <artifactId>camel</artifactId>
-        <version>4.0-m1-SNAPSHOT</version>
+        <version>4.0-m1</version>
     </parent>
 
     <groupId>org.apache.servicemix.camel</groupId>
     <artifactId>org.apache.servicemix.camel.component</artifactId>
     <packaging>bundle</packaging>
-    <version>4.0-m1-SNAPSHOT</version>
+    <version>4.0-m1</version>
     <name>Apache ServiceMix Camel Component</name>
 
     <dependencies>
diff --git a/cxf/bundles/cxf/pom.xml b/cxf/bundles/cxf/pom.xml
index 19a0629..1ce6847 100644
--- a/cxf/bundles/cxf/pom.xml
+++ b/cxf/bundles/cxf/pom.xml
@@ -1,142 +1,140 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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">
-
-    <!--
-
-        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.
-    -->
-
-    <modelVersion>4.0.0</modelVersion>
-
-    <parent>
-        <groupId>org.apache.servicemix.cxf.bundles</groupId>
-        <artifactId>bundles</artifactId>
-        <version>4.0-m1-SNAPSHOT</version>
-    </parent>
-
-    <groupId>org.apache.servicemix.bundles</groupId>
-    <artifactId>org.apache.servicemix.bundles.cxf-2.0.5</artifactId>
-    <version>4.0-m1-SNAPSHOT</version>
-    <packaging>bundle</packaging>
-    <name>Apache ServiceMix OSGI Common Bundles: cxf</name>
-    <description>
-        This bundle simply wraps cxf ${pkgVersion}.
-    </description>
-
-    <properties>
-        <pkgVersion>2.0.5.incubator</pkgVersion>
-		<servicemix.osgi.export>
-            org.apache.cxf*;version=${pkgVersion};-split-package:=merge-first,
-            org.xmlsoap.schemas*;version=${pkgVersion};-split-package:=merge-first,
-            '=META-INF.cxf'
-        </servicemix.osgi.export>
-        <servicemix.osgi.import.pkg>
-            com.ibm*;resolution:=optional,
-            com.sun*;resolution:=optional,
-            javanet.staxutils*;resolution:=optional,
-            javax.jms*;resolution:=optional,
-            javax.xml.soap,
-            junit.framework*;resolution:=optional,
-            org.apache.commons.lang*;resolution:=optional,
-            org.apache.log4j*;resolution:=optional,
-            org.apache.tools.ant*;resolution:=optional,
-            org.apache.velocity*;resolution:=optional,
-            org.apache.xmlbeans*;resolution:=optional,
-            org.apache.ws.security*;resolution:=optional,
-            org.codehaus.jra*;resolution:=optional,
-            org.jdom*;resolution:=optional,
-            org.junit*;resolution:=optional,
-            org.mortbay*;resolution:=optional,
-            org.mozilla.javascript*;resolution:=optional,
-            org.springframework*;resolution:=optional,
-            *
-        </servicemix.osgi.import.pkg>
-        <servicemix.osgi.private.pkg>
-            META-INF*;-split-package:=merge-first,
-            schemas*;-split-package:=merge-first
-        </servicemix.osgi.private.pkg>
-    </properties>
-
-    <dependencies>
-        <dependency>
-            <groupId>org.apache.cxf</groupId>
-            <artifactId>cxf-bundle</artifactId>
-            <version>2.0.5-incubator</version>
-            <optional>true</optional>
-        </dependency>
-
-        <!-- Dependency on other bundles -->
-        <dependency>
-            <groupId>org.apache.servicemix.bundles</groupId>
-            <artifactId>org.apache.servicemix.bundles.jaxws-api-2.0</artifactId>
-            <version>${pom.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.servicemix.bundles</groupId>
-            <artifactId>org.apache.servicemix.bundles.neethi-2.0.2</artifactId>
-            <version>${pom.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.servicemix.bundles</groupId>
-            <artifactId>org.apache.servicemix.bundles.saaj-impl-1.3</artifactId>
-            <version>${pom.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.servicemix.bundles</groupId>
-            <artifactId>org.apache.servicemix.bundles.wsdl4j-1.6.1</artifactId>
-            <version>${pom.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.servicemix.bundles</groupId>
-            <artifactId>org.apache.servicemix.bundles.xmlresolver-1.2</artifactId>
-            <version>${pom.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.servicemix.bundles</groupId>
-            <artifactId>org.apache.servicemix.bundles.xmlschema-1.3.2</artifactId>
-            <version>${pom.version}</version>
-        </dependency>
-    </dependencies>
-
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.felix</groupId>
-                <artifactId>maven-bundle-plugin</artifactId>
-                <executions>
-                    <execution>
-                        <goals>
-                            <goal>bundle</goal>
-                        </goals>
-                    </execution>
-                </executions>
-                <configuration>
-                    <instructions>
-                        <Bundle-SymbolicName>${pom.artifactId}</Bundle-SymbolicName>
-                        <Export-Package>${servicemix.osgi.export}</Export-Package>
-                        <Import-Package>${servicemix.osgi.import.pkg}*</Import-Package>
-                        <Private-Package>${servicemix.osgi.private.pkg}</Private-Package>
-                        <_exportcontents>META-INF.cxf</_exportcontents>
-                        <_failok>true</_failok>
-                    </instructions>
-                    <unpackBundle>true</unpackBundle>
-                </configuration>
-            </plugin>
-        </plugins>
-    </build>
-
-</project>
+<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">
+
+    <!--
+
+        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.
+    -->
+
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.apache.servicemix.cxf.bundles</groupId>
+        <artifactId>bundles</artifactId>
+        <version>4.0-m1</version>
+    </parent>
+
+    <groupId>org.apache.servicemix.bundles</groupId>
+    <artifactId>org.apache.servicemix.bundles.cxf-2.0.5</artifactId>
+    <version>4.0-m1</version>
+    <packaging>bundle</packaging>
+    <name>Apache ServiceMix OSGI Common Bundles: cxf</name>
+    <description>
+        This bundle simply wraps cxf ${pkgVersion}.
+    </description>
+
+    <properties>
+        <pkgVersion>2.0.5.incubator</pkgVersion>
+		<servicemix.osgi.export>
+            org.apache.cxf*;version=${pkgVersion};-split-package:=merge-first,
+            org.xmlsoap.schemas*;version=${pkgVersion};-split-package:=merge-first,
+            '=META-INF.cxf'
+        </servicemix.osgi.export>
+        <servicemix.osgi.import.pkg>
+            com.ibm*;resolution:=optional,
+            com.sun*;resolution:=optional,
+            javanet.staxutils*;resolution:=optional,
+            javax.jms*;resolution:=optional,
+            javax.xml.soap,
+            junit.framework*;resolution:=optional,
+            org.apache.commons.lang*;resolution:=optional,
+            org.apache.log4j*;resolution:=optional,
+            org.apache.tools.ant*;resolution:=optional,
+            org.apache.velocity*;resolution:=optional,
+            org.apache.xmlbeans*;resolution:=optional,
+            org.apache.ws.security*;resolution:=optional,
+            org.codehaus.jra*;resolution:=optional,
+            org.jdom*;resolution:=optional,
+            org.junit*;resolution:=optional,
+            org.mortbay*;resolution:=optional,
+            org.mozilla.javascript*;resolution:=optional,
+            org.springframework*;resolution:=optional,
+            *
+        </servicemix.osgi.import.pkg>
+        <servicemix.osgi.private.pkg>
+            META-INF*;-split-package:=merge-first,
+            schemas*;-split-package:=merge-first
+        </servicemix.osgi.private.pkg>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.cxf</groupId>
+            <artifactId>cxf-bundle</artifactId>
+            <version>2.0.5-incubator</version>
+            <optional>true</optional>
+        </dependency>
+
+        <!-- Dependency on other bundles -->
+        <dependency>
+            <groupId>org.apache.servicemix.bundles</groupId>
+            <artifactId>org.apache.servicemix.bundles.jaxws-api-2.0</artifactId>
+            <version>${pom.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.servicemix.bundles</groupId>
+            <artifactId>org.apache.servicemix.bundles.neethi-2.0.2</artifactId>
+            <version>${pom.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.servicemix.bundles</groupId>
+            <artifactId>org.apache.servicemix.bundles.saaj-impl-1.3</artifactId>
+            <version>${pom.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.servicemix.bundles</groupId>
+            <artifactId>org.apache.servicemix.bundles.wsdl4j-1.6.1</artifactId>
+            <version>${pom.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.servicemix.bundles</groupId>
+            <artifactId>org.apache.servicemix.bundles.xmlresolver-1.2</artifactId>
+            <version>${pom.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.servicemix.bundles</groupId>
+            <artifactId>org.apache.servicemix.bundles.xmlschema-1.3.2</artifactId>
+            <version>${pom.version}</version>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.felix</groupId>
+                <artifactId>maven-bundle-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>bundle</goal>
+                        </goals>
+                    </execution>
+                </executions>
+                <configuration>
+                    <instructions>
+                        <Bundle-SymbolicName>${pom.artifactId}</Bundle-SymbolicName>
+                        <Export-Package>${servicemix.osgi.export}</Export-Package>
+                        <Import-Package>${servicemix.osgi.import.pkg}*</Import-Package>
+                        <Private-Package>${servicemix.osgi.private.pkg}</Private-Package>
+                        <_exportcontents>META-INF.cxf</_exportcontents>
+                        <_failok>true</_failok>
+                    </instructions>
+                    <unpackBundle>true</unpackBundle>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+
+</project>
\ No newline at end of file
diff --git a/cxf/bundles/jaxws-api/pom.xml b/cxf/bundles/jaxws-api/pom.xml
index f156e02..a500bf7 100644
--- a/cxf/bundles/jaxws-api/pom.xml
+++ b/cxf/bundles/jaxws-api/pom.xml
@@ -1,72 +1,70 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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">
-
-    <!--
-
-        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.
-    -->
-
-    <modelVersion>4.0.0</modelVersion>
-
-    <parent>
-        <groupId>org.apache.servicemix.cxf.bundles</groupId>
-        <artifactId>bundles</artifactId>
-        <version>4.0-m1-SNAPSHOT</version>
-    </parent>
-
-    <groupId>org.apache.servicemix.bundles</groupId>
-    <artifactId>org.apache.servicemix.bundles.jaxws-api-2.0</artifactId>
-    <version>4.0-m1-SNAPSHOT</version>
-    <packaging>bundle</packaging>
-    <name>Apache ServiceMix OSGI Common Bundles: ${pkgArtifactId}</name>
-    <description>
-        This bundle simply wraps ${pkgArtifactId}-${pkgVersion}.jar.
-    </description>
-
-    <properties>
-        <pkgArtifactId>jaxws-api</pkgArtifactId>
-        <pkgVersion>${jaxws.api.version}</pkgVersion>
-        <servicemix.osgi.export.pkg>javax.xml.ws*</servicemix.osgi.export.pkg>
-        <servicemix.osgi.import.pkg>
-            javax.xml.soap*;resolution:=optional,
-            *
-        </servicemix.osgi.import.pkg>
-    </properties>
-
-    <dependencies>
-        <dependency>
-            <groupId>javax.xml.ws</groupId>
-            <artifactId>${pkgArtifactId}</artifactId>
-            <version>${pkgVersion}</version>
-            <optional>true</optional>
-            <exclusions>
-                <groupId>javax.xml.bind</groupId>
-                <artifactId>jaxb-api</artifactId>
-            </exclusions>
-        </dependency>
-        <dependency>
-		    <groupId>org.apache.servicemix.bundles</groupId>
-            <artifactId>org.apache.servicemix.bundles.jaxb-api-2.0</artifactId>
-            <version>4.0-m1-SNAPSHOT</version>
-        </dependency>
-        <dependency>
-		    <groupId>org.apache.geronimo.specs</groupId>
-            <artifactId>geronimo-saaj_1.3_spec</artifactId>
-            <version>${geronimo.saaj.version}</version>
-        </dependency>
-    </dependencies>
-</project>
+<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">
+
+    <!--
+
+        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.
+    -->
+
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.apache.servicemix.cxf.bundles</groupId>
+        <artifactId>bundles</artifactId>
+        <version>4.0-m1</version>
+    </parent>
+
+    <groupId>org.apache.servicemix.bundles</groupId>
+    <artifactId>org.apache.servicemix.bundles.jaxws-api-2.0</artifactId>
+    <version>4.0-m1</version>
+    <packaging>bundle</packaging>
+    <name>Apache ServiceMix OSGI Common Bundles: ${pkgArtifactId}</name>
+    <description>
+        This bundle simply wraps ${pkgArtifactId}-${pkgVersion}.jar.
+    </description>
+
+    <properties>
+        <pkgArtifactId>jaxws-api</pkgArtifactId>
+        <pkgVersion>${jaxws.api.version}</pkgVersion>
+        <servicemix.osgi.export.pkg>javax.xml.ws*</servicemix.osgi.export.pkg>
+        <servicemix.osgi.import.pkg>
+            javax.xml.soap*;resolution:=optional,
+            *
+        </servicemix.osgi.import.pkg>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>javax.xml.ws</groupId>
+            <artifactId>${pkgArtifactId}</artifactId>
+            <version>${pkgVersion}</version>
+            <optional>true</optional>
+            <exclusions>
+                <groupId>javax.xml.bind</groupId>
+                <artifactId>jaxb-api</artifactId>
+            </exclusions>
+        </dependency>
+        <dependency>
+		    <groupId>org.apache.servicemix.bundles</groupId>
+            <artifactId>org.apache.servicemix.bundles.jaxb-api-2.0</artifactId>
+            <version>4.0-m1</version>
+        </dependency>
+        <dependency>
+		    <groupId>org.apache.geronimo.specs</groupId>
+            <artifactId>geronimo-saaj_1.3_spec</artifactId>
+            <version>${geronimo.saaj.version}</version>
+        </dependency>
+    </dependencies>
+</project>
\ No newline at end of file
diff --git a/cxf/bundles/neethi/pom.xml b/cxf/bundles/neethi/pom.xml
index 7d49bb1..5840df5 100644
--- a/cxf/bundles/neethi/pom.xml
+++ b/cxf/bundles/neethi/pom.xml
@@ -1,89 +1,87 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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">
-
-    <!--
-
-        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.
-    -->
-
-    <modelVersion>4.0.0</modelVersion>
-
-    <parent>
-        <groupId>org.apache.servicemix.cxf.bundles</groupId>
-        <artifactId>bundles</artifactId>
-        <version>4.0-m1-SNAPSHOT</version>
-    </parent>
-
-    <groupId>org.apache.servicemix.bundles</groupId>
-    <artifactId>org.apache.servicemix.bundles.neethi-2.0.2</artifactId>
-    <version>4.0-m1-SNAPSHOT</version>
-    <packaging>bundle</packaging>
-    <name>Apache ServiceMix OSGI Common Bundles: ${pkgArtifactId}</name>
-    <description>
-        This bundle simply wraps ${pkgArtifactId}-${pkgVersion}.jar.
-    </description>
-
-    <properties>
-        <pkgArtifactId>neethi</pkgArtifactId>
-        <pkgVersion>2.0.2</pkgVersion>
-        <servicemix.osgi.import.pkg>
-            org.apache.axiom*;resolution:=optional,
-            sun.misc*;resolution:=optional,
-            *
-        </servicemix.osgi.import.pkg>
-        <servicemix.osgi.export.pkg>
-            org.apache.neethi
-		</servicemix.osgi.export.pkg>
-        <servicemix.osgi.private.pkg></servicemix.osgi.private.pkg>
-    </properties>
-
-    <dependencies>
-        <dependency>
-            <groupId>org.apache.neethi</groupId>
-            <artifactId>neethi</artifactId>
-            <version>${pkgVersion}</version>
-            <optional>true</optional>
-            <exclusions>
-                <exclusion>
-                    <groupId>log4j</groupId>
-                    <artifactId>log4j</artifactId>
-                </exclusion>
-                <exclusion>
-                    <groupId>javax.servlet</groupId>
-                    <artifactId>servlet-api</artifactId>
-                </exclusion>
-                <exclusion>
-                    <groupId>org.apache.ws.commons.axiom</groupId>
-                    <artifactId>axiom-impl</artifactId>
-                </exclusion>
-                <exclusion>
-                    <groupId>org.apache.ws.commons.axiom</groupId>
-                    <artifactId>axiom-parent</artifactId>
-                </exclusion>
-                <exclusion>
-                    <groupId>org.apache.ws.commons.axiom</groupId>
-                    <artifactId>axiom-api</artifactId>
-                </exclusion>
-                <exclusion>
-                    <groupId>woodstox</groupId>
-                    <artifactId>wstx-asl</artifactId>
-                </exclusion>
-            </exclusions>
-        </dependency>
-    </dependencies>
-
-</project>
+<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">
+
+    <!--
+
+        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.
+    -->
+
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.apache.servicemix.cxf.bundles</groupId>
+        <artifactId>bundles</artifactId>
+        <version>4.0-m1</version>
+    </parent>
+
+    <groupId>org.apache.servicemix.bundles</groupId>
+    <artifactId>org.apache.servicemix.bundles.neethi-2.0.2</artifactId>
+    <version>4.0-m1</version>
+    <packaging>bundle</packaging>
+    <name>Apache ServiceMix OSGI Common Bundles: ${pkgArtifactId}</name>
+    <description>
+        This bundle simply wraps ${pkgArtifactId}-${pkgVersion}.jar.
+    </description>
+
+    <properties>
+        <pkgArtifactId>neethi</pkgArtifactId>
+        <pkgVersion>2.0.2</pkgVersion>
+        <servicemix.osgi.import.pkg>
+            org.apache.axiom*;resolution:=optional,
+            sun.misc*;resolution:=optional,
+            *
+        </servicemix.osgi.import.pkg>
+        <servicemix.osgi.export.pkg>
+            org.apache.neethi
+		</servicemix.osgi.export.pkg>
+        <servicemix.osgi.private.pkg />
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.neethi</groupId>
+            <artifactId>neethi</artifactId>
+            <version>${pkgVersion}</version>
+            <optional>true</optional>
+            <exclusions>
+                <exclusion>
+                    <groupId>log4j</groupId>
+                    <artifactId>log4j</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>javax.servlet</groupId>
+                    <artifactId>servlet-api</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.apache.ws.commons.axiom</groupId>
+                    <artifactId>axiom-impl</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.apache.ws.commons.axiom</groupId>
+                    <artifactId>axiom-parent</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.apache.ws.commons.axiom</groupId>
+                    <artifactId>axiom-api</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>woodstox</groupId>
+                    <artifactId>wstx-asl</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+    </dependencies>
+
+</project>
\ No newline at end of file
diff --git a/cxf/bundles/pom.xml b/cxf/bundles/pom.xml
index 367ef68..5326d6f 100644
--- a/cxf/bundles/pom.xml
+++ b/cxf/bundles/pom.xml
@@ -23,13 +23,13 @@
     <parent>
         <groupId>org.apache.servicemix.cxf</groupId>
         <artifactId>cxf</artifactId>
-        <version>4.0-m1-SNAPSHOT</version>
+        <version>4.0-m1</version>
     </parent>
 
     <groupId>org.apache.servicemix.cxf.bundles</groupId>
     <artifactId>bundles</artifactId>
     <packaging>pom</packaging>
-    <version>4.0-m1-SNAPSHOT</version>
+    <version>4.0-m1</version>
     <name>Apache ServiceMix OSGI Common Bundles</name>
 
     <modules>
diff --git a/cxf/bundles/saaj-impl/pom.xml b/cxf/bundles/saaj-impl/pom.xml
index cd6d38d..a246f43 100644
--- a/cxf/bundles/saaj-impl/pom.xml
+++ b/cxf/bundles/saaj-impl/pom.xml
@@ -1,73 +1,71 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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">
-
-    <!--
-
-        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.
-    -->
-
-    <modelVersion>4.0.0</modelVersion>
-
-    <parent>
-        <groupId>org.apache.servicemix.cxf.bundles</groupId>
-        <artifactId>bundles</artifactId>
-        <version>4.0-m1-SNAPSHOT</version>
-    </parent>
-
-    <groupId>org.apache.servicemix.bundles</groupId>
-    <artifactId>org.apache.servicemix.bundles.saaj-impl-1.3</artifactId>
-    <version>4.0-m1-SNAPSHOT</version>
-    <packaging>bundle</packaging>
-    <name>Apache ServiceMix OSGI Common Bundles: ${pkgArtifactId}</name>
-    <description>
-        This bundle simply wraps ${pkgArtifactId}-${pkgVersion}.jar.
-    </description>
-
-    <properties>
-        <pkgArtifactId>saaj-impl</pkgArtifactId>
-        <pkgVersion>1.3</pkgVersion>
-        <servicemix.osgi.export.pkg>com.sun.xml.messaging.saaj</servicemix.osgi.export.pkg>
-        <servicemix.osgi.import.pkg>
-            com.sun.image.codec.jpeg*;resolution:=optional,
-            com.sun.xml.fastinfoset*;resolution:=optional,
-            javax.xml.soap,
-            org.jvnet.fastinfoset*;resolution:=optional,
-            *
-        </servicemix.osgi.import.pkg>
-    </properties>
-
-    <dependencies>
-        <dependency>
-            <groupId>com.sun.xml.messaging.saaj</groupId>
-            <artifactId>${pkgArtifactId}</artifactId>
-            <version>${pkgVersion}</version>
-            <optional>true</optional>
-            <exclusions>
-                <exclusion>
-                    <groupId>javax.xml.soap</groupId>
-                    <artifactId>saaj-api</artifactId>
-                </exclusion>
-            </exclusions>
-        </dependency>
-        <dependency>
-		    <groupId>org.apache.geronimo.specs</groupId>
-            <artifactId>geronimo-saaj_1.3_spec</artifactId>
-            <version>${geronimo.saaj.version}</version>
-            <optional>true</optional>
-        </dependency>
-    </dependencies>
-</project>
+<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">
+
+    <!--
+
+        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.
+    -->
+
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.apache.servicemix.cxf.bundles</groupId>
+        <artifactId>bundles</artifactId>
+        <version>4.0-m1</version>
+    </parent>
+
+    <groupId>org.apache.servicemix.bundles</groupId>
+    <artifactId>org.apache.servicemix.bundles.saaj-impl-1.3</artifactId>
+    <version>4.0-m1</version>
+    <packaging>bundle</packaging>
+    <name>Apache ServiceMix OSGI Common Bundles: ${pkgArtifactId}</name>
+    <description>
+        This bundle simply wraps ${pkgArtifactId}-${pkgVersion}.jar.
+    </description>
+
+    <properties>
+        <pkgArtifactId>saaj-impl</pkgArtifactId>
+        <pkgVersion>1.3</pkgVersion>
+        <servicemix.osgi.export.pkg>com.sun.xml.messaging.saaj</servicemix.osgi.export.pkg>
+        <servicemix.osgi.import.pkg>
+            com.sun.image.codec.jpeg*;resolution:=optional,
+            com.sun.xml.fastinfoset*;resolution:=optional,
+            javax.xml.soap,
+            org.jvnet.fastinfoset*;resolution:=optional,
+            *
+        </servicemix.osgi.import.pkg>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>com.sun.xml.messaging.saaj</groupId>
+            <artifactId>${pkgArtifactId}</artifactId>
+            <version>${pkgVersion}</version>
+            <optional>true</optional>
+            <exclusions>
+                <exclusion>
+                    <groupId>javax.xml.soap</groupId>
+                    <artifactId>saaj-api</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+		    <groupId>org.apache.geronimo.specs</groupId>
+            <artifactId>geronimo-saaj_1.3_spec</artifactId>
+            <version>${geronimo.saaj.version}</version>
+            <optional>true</optional>
+        </dependency>
+    </dependencies>
+</project>
\ No newline at end of file
diff --git a/cxf/bundles/wsdl4j/pom.xml b/cxf/bundles/wsdl4j/pom.xml
index 8d271fe..4bb0f7d 100644
--- a/cxf/bundles/wsdl4j/pom.xml
+++ b/cxf/bundles/wsdl4j/pom.xml
@@ -1,58 +1,56 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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">
-
-    <!--
-
-        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.
-    -->
-
-    <modelVersion>4.0.0</modelVersion>
-
-    <parent>
-        <groupId>org.apache.servicemix.cxf.bundles</groupId>
-        <artifactId>bundles</artifactId>
-        <version>4.0-m1-SNAPSHOT</version>
-    </parent>
-
-    <groupId>org.apache.servicemix.bundles</groupId>
-    <artifactId>org.apache.servicemix.bundles.wsdl4j-1.6.1</artifactId>
-    <version>4.0-m1-SNAPSHOT</version>
-    <packaging>bundle</packaging>
-    <name>Apache ServiceMix OSGI Common Bundles: ${pkgArtifactId}</name>
-    <description>
-        This bundle simply wraps ${pkgArtifactId}-${pkgVersion}.jar.
-    </description>
-
-    <properties>
-        <pkgArtifactId>wsdl4j</pkgArtifactId>
-        <pkgVersion>1.6.1</pkgVersion>
-        <servicemix.osgi.export>
-            javax.wsdl*;version=1.2,
-            com.ibm.wsdl*;version=${pkgVersion}
-        </servicemix.osgi.export>
-    </properties>
-
-    <dependencies>
-        <dependency>
-            <groupId>wsdl4j</groupId>
-            <artifactId>wsdl4j</artifactId>
-            <version>${pkgVersion}</version>
-            <optional>true</optional>
-        </dependency>
-    </dependencies>
-
-</project>
+<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">
+
+    <!--
+
+        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.
+    -->
+
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.apache.servicemix.cxf.bundles</groupId>
+        <artifactId>bundles</artifactId>
+        <version>4.0-m1</version>
+    </parent>
+
+    <groupId>org.apache.servicemix.bundles</groupId>
+    <artifactId>org.apache.servicemix.bundles.wsdl4j-1.6.1</artifactId>
+    <version>4.0-m1</version>
+    <packaging>bundle</packaging>
+    <name>Apache ServiceMix OSGI Common Bundles: ${pkgArtifactId}</name>
+    <description>
+        This bundle simply wraps ${pkgArtifactId}-${pkgVersion}.jar.
+    </description>
+
+    <properties>
+        <pkgArtifactId>wsdl4j</pkgArtifactId>
+        <pkgVersion>1.6.1</pkgVersion>
+        <servicemix.osgi.export>
+            javax.wsdl*;version=1.2,
+            com.ibm.wsdl*;version=${pkgVersion}
+        </servicemix.osgi.export>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>wsdl4j</groupId>
+            <artifactId>wsdl4j</artifactId>
+            <version>${pkgVersion}</version>
+            <optional>true</optional>
+        </dependency>
+    </dependencies>
+
+</project>
\ No newline at end of file
diff --git a/cxf/bundles/xmlresolver/pom.xml b/cxf/bundles/xmlresolver/pom.xml
index 9c5aca6..814f633 100644
--- a/cxf/bundles/xmlresolver/pom.xml
+++ b/cxf/bundles/xmlresolver/pom.xml
@@ -1,56 +1,54 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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">
-
-    <!--
-
-        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.
-    -->
-
-    <modelVersion>4.0.0</modelVersion>
-
-    <parent>
-        <groupId>org.apache.servicemix.cxf.bundles</groupId>
-        <artifactId>bundles</artifactId>
-        <version>4.0-m1-SNAPSHOT</version>
-    </parent>
-
-    <groupId>org.apache.servicemix.bundles</groupId>
-    <artifactId>org.apache.servicemix.bundles.xmlresolver-1.2</artifactId>
-    <version>4.0-m1-SNAPSHOT</version>
-    <packaging>bundle</packaging>
-    <name>Apache ServiceMix OSGI Common Bundles: ${pkgArtifactId}</name>
-    <description>
-        This bundle simply wraps ${pkgArtifactId}-${pkgVersion}.jar.
-    </description>
-
-    <properties>
-        <pkgArtifactId>xmlresolver</pkgArtifactId>
-        <pkgVersion>1.2</pkgVersion>
-        <servicemix.osgi.export.pkg>org.apache.xml.resolver</servicemix.osgi.export.pkg>
-        <servicemix.osgi.private.pkg></servicemix.osgi.private.pkg>
-    </properties>
-
-    <dependencies>
-        <dependency>
-            <groupId>xml-resolver</groupId>
-            <artifactId>xml-resolver</artifactId>
-            <version>${pkgVersion}</version>
-            <optional>true</optional>
-        </dependency>
-    </dependencies>
-
-</project>
+<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">
+
+    <!--
+
+        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.
+    -->
+
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.apache.servicemix.cxf.bundles</groupId>
+        <artifactId>bundles</artifactId>
+        <version>4.0-m1</version>
+    </parent>
+
+    <groupId>org.apache.servicemix.bundles</groupId>
+    <artifactId>org.apache.servicemix.bundles.xmlresolver-1.2</artifactId>
+    <version>4.0-m1</version>
+    <packaging>bundle</packaging>
+    <name>Apache ServiceMix OSGI Common Bundles: ${pkgArtifactId}</name>
+    <description>
+        This bundle simply wraps ${pkgArtifactId}-${pkgVersion}.jar.
+    </description>
+
+    <properties>
+        <pkgArtifactId>xmlresolver</pkgArtifactId>
+        <pkgVersion>1.2</pkgVersion>
+        <servicemix.osgi.export.pkg>org.apache.xml.resolver</servicemix.osgi.export.pkg>
+        <servicemix.osgi.private.pkg />
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>xml-resolver</groupId>
+            <artifactId>xml-resolver</artifactId>
+            <version>${pkgVersion}</version>
+            <optional>true</optional>
+        </dependency>
+    </dependencies>
+
+</project>
\ No newline at end of file
diff --git a/cxf/bundles/xmlschema/pom.xml b/cxf/bundles/xmlschema/pom.xml
index 4f8fdac..7c3672a 100644
--- a/cxf/bundles/xmlschema/pom.xml
+++ b/cxf/bundles/xmlschema/pom.xml
@@ -1,56 +1,54 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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">
-
-    <!--
-
-        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.
-    -->
-
-    <modelVersion>4.0.0</modelVersion>
-
-    <parent>
-        <groupId>org.apache.servicemix.cxf.bundles</groupId>
-        <artifactId>bundles</artifactId>
-        <version>4.0-m1-SNAPSHOT</version>
-    </parent>
-
-    <groupId>org.apache.servicemix.bundles</groupId>
-    <artifactId>org.apache.servicemix.bundles.xmlschema-1.3.2</artifactId>
-    <version>4.0-m1-SNAPSHOT</version>
-    <packaging>bundle</packaging>
-    <name>Apache ServiceMix OSGI Common Bundles: ${pkgArtifactId}</name>
-    <description>
-        This bundle simply wraps ${pkgArtifactId}-${pkgVersion}.jar.
-    </description>
-
-    <properties>
-        <pkgArtifactId>xmlschema</pkgArtifactId>
-        <pkgVersion>1.3.2</pkgVersion>
-        <servicemix.osgi.export.pkg>org.apache.ws.commons.schema</servicemix.osgi.export.pkg>
-        <servicemix.osgi.private.pkg></servicemix.osgi.private.pkg>
-    </properties>
-
-    <dependencies>
-        <dependency>
-            <groupId>org.apache.ws.commons.schema</groupId>
-            <artifactId>XmlSchema</artifactId>
-            <version>${pkgVersion}</version>
-            <optional>true</optional>
-        </dependency>
-    </dependencies>
-
-</project>
+<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">
+
+    <!--
+
+        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.
+    -->
+
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.apache.servicemix.cxf.bundles</groupId>
+        <artifactId>bundles</artifactId>
+        <version>4.0-m1</version>
+    </parent>
+
+    <groupId>org.apache.servicemix.bundles</groupId>
+    <artifactId>org.apache.servicemix.bundles.xmlschema-1.3.2</artifactId>
+    <version>4.0-m1</version>
+    <packaging>bundle</packaging>
+    <name>Apache ServiceMix OSGI Common Bundles: ${pkgArtifactId}</name>
+    <description>
+        This bundle simply wraps ${pkgArtifactId}-${pkgVersion}.jar.
+    </description>
+
+    <properties>
+        <pkgArtifactId>xmlschema</pkgArtifactId>
+        <pkgVersion>1.3.2</pkgVersion>
+        <servicemix.osgi.export.pkg>org.apache.ws.commons.schema</servicemix.osgi.export.pkg>
+        <servicemix.osgi.private.pkg />
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.ws.commons.schema</groupId>
+            <artifactId>XmlSchema</artifactId>
+            <version>${pkgVersion}</version>
+            <optional>true</optional>
+        </dependency>
+    </dependencies>
+
+</project>
\ No newline at end of file
diff --git a/cxf/cxf-binding-nmr/pom.xml b/cxf/cxf-binding-nmr/pom.xml
index 9cfa7d2..018a873 100644
--- a/cxf/cxf-binding-nmr/pom.xml
+++ b/cxf/cxf-binding-nmr/pom.xml
@@ -1,135 +1,133 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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">
-
-    <!--
-
-        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.
-    -->
-
-    <modelVersion>4.0.0</modelVersion>
-
-    <parent>
-	    <groupId>org.apache.servicemix.cxf</groupId>
-	    <artifactId>cxf</artifactId>
-        <version>4.0-m1-SNAPSHOT</version>
-    </parent>
-
-    <groupId>org.apache.servicemix.cxf</groupId>
-    <artifactId>org.apache.servicemix.cxf.binding.nmr</artifactId>
-    <packaging>bundle</packaging>
-    <version>4.0-m1-SNAPSHOT</version>
-    <name>Apache ServiceMix CXF Binding for NMR</name>
-
-    <dependencies>
-        <dependency>
-            <groupId>org.apache.servicemix.nmr</groupId>
-            <artifactId>org.apache.servicemix.nmr.api</artifactId>
-            <version>${servicemix.nmr.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.servicemix.bundles</groupId>
-            <artifactId>org.apache.servicemix.bundles.cxf-2.0.5</artifactId>
-            <version>${pom.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.geronimo.specs</groupId>
-            <artifactId>geronimo-ws-metadata_2.0_spec</artifactId>
-            <version>${geronimo.wsmetadata.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.geronimo.specs</groupId>
-            <artifactId>geronimo-annotation_1.0_spec</artifactId>
-            <version>${geronimo.annotation.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.geronimo.specs</groupId>
-            <artifactId>geronimo-stax-api_1.0_spec</artifactId>
-            <version>${geronimo.stax.version}</version>
-        </dependency>
-    </dependencies>
-
-    <build>
-        <plugins>
-            <!-- Bundle generation -->
-            <plugin>
-                <groupId>org.apache.felix</groupId>
-                <artifactId>maven-bundle-plugin</artifactId>
-                <configuration>
-                    <instructions>
-                        <Bundle-SymbolicName>${pom.artifactId}</Bundle-SymbolicName>
-                        <Import-Package>
-                            javax.xml.rpc*;resolution:=optional,
-                            javax.xml.soap,
-                            com.ctc.wstx.stax;resolution:=optional,
-                            org.apache.axis.soap;resolution:=optional,
-                            org.apache.axis2.saaj;resolution:=optional,
-                            com.sun.xml.messaging.saaj.soap.ver1_1;resolution:=optional,
-                            com.sun.xml.messaging.saaj.client.p2p;resolution:=optional,
-                            com.sun.xml.messaging.saaj.soap;resolution:=optional,
-                            *
-                        </Import-Package>
-                        <!-- Needed for jaxb annotations classes -->
-                        <DynamicImport-Package>*</DynamicImport-Package>
-                        <Export-Package>
-                            ${pom.artifactId}*,
-                            '=META-INF.cxf.binding.nmr'
-                        </Export-Package>
-                        <Private-Package></Private-Package>
-                        <_failok>true</_failok>
-                        <Spring-Context>*;publish-context:=false</Spring-Context>
-                    </instructions>
-                </configuration>
-            </plugin>
-            <!-- generate dependencies versions -->
-            <plugin>
-		        <groupId>org.apache.servicemix.kernel.testing</groupId>
-		        <artifactId>depends-maven-plugin</artifactId>
-                <version>${servicemix.kernel.version}</version>
-                <executions>
-                    <execution>
-                        <id>generate-depends-file</id>
-                        <goals>
-                            <goal>generate-depends-file</goal>
-                        </goals>
-                    </execution>
-                </executions>
-            </plugin>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-surefire-plugin</artifactId>
-                <configuration>
-                    <forkMode>pertest</forkMode>
-                    <systemProperties>
-                        <property>
-                            <name>javax.xml.parsers.DocumentBuilderFactory</name>
-                            <value>com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl</value>
-                        </property>
-                        <property>
-                            <name>javax.xml.datatype.DatatypeFactory</name>
-                            <value>com.sun.org.apache.xerces.internal.jaxp.datatype.DatatypeFactoryImpl</value>
-                        </property>
-                        <property>
-                            <name>javax.xml.parsers.SAXParserFactory</name>
-                            <value>com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl</value>
-                        </property>
-                    </systemProperties>
-                </configuration>
-            </plugin>
-        </plugins>
-    </build>
-
-</project>
+<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">
+
+    <!--
+
+        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.
+    -->
+
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+	    <groupId>org.apache.servicemix.cxf</groupId>
+	    <artifactId>cxf</artifactId>
+        <version>4.0-m1</version>
+    </parent>
+
+    <groupId>org.apache.servicemix.cxf</groupId>
+    <artifactId>org.apache.servicemix.cxf.binding.nmr</artifactId>
+    <packaging>bundle</packaging>
+    <version>4.0-m1</version>
+    <name>Apache ServiceMix CXF Binding for NMR</name>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.servicemix.nmr</groupId>
+            <artifactId>org.apache.servicemix.nmr.api</artifactId>
+            <version>${servicemix.nmr.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.servicemix.bundles</groupId>
+            <artifactId>org.apache.servicemix.bundles.cxf-2.0.5</artifactId>
+            <version>${pom.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.geronimo.specs</groupId>
+            <artifactId>geronimo-ws-metadata_2.0_spec</artifactId>
+            <version>${geronimo.wsmetadata.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.geronimo.specs</groupId>
+            <artifactId>geronimo-annotation_1.0_spec</artifactId>
+            <version>${geronimo.annotation.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.geronimo.specs</groupId>
+            <artifactId>geronimo-stax-api_1.0_spec</artifactId>
+            <version>${geronimo.stax.version}</version>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <!-- Bundle generation -->
+            <plugin>
+                <groupId>org.apache.felix</groupId>
+                <artifactId>maven-bundle-plugin</artifactId>
+                <configuration>
+                    <instructions>
+                        <Bundle-SymbolicName>${pom.artifactId}</Bundle-SymbolicName>
+                        <Import-Package>
+                            javax.xml.rpc*;resolution:=optional,
+                            javax.xml.soap,
+                            com.ctc.wstx.stax;resolution:=optional,
+                            org.apache.axis.soap;resolution:=optional,
+                            org.apache.axis2.saaj;resolution:=optional,
+                            com.sun.xml.messaging.saaj.soap.ver1_1;resolution:=optional,
+                            com.sun.xml.messaging.saaj.client.p2p;resolution:=optional,
+                            com.sun.xml.messaging.saaj.soap;resolution:=optional,
+                            *
+                        </Import-Package>
+                        <!-- Needed for jaxb annotations classes -->
+                        <DynamicImport-Package>*</DynamicImport-Package>
+                        <Export-Package>
+                            ${pom.artifactId}*,
+                            '=META-INF.cxf.binding.nmr'
+                        </Export-Package>
+                        <Private-Package />
+                        <_failok>true</_failok>
+                        <Spring-Context>*;publish-context:=false</Spring-Context>
+                    </instructions>
+                </configuration>
+            </plugin>
+            <!-- generate dependencies versions -->
+            <plugin>
+		        <groupId>org.apache.servicemix.kernel.testing</groupId>
+		        <artifactId>depends-maven-plugin</artifactId>
+                <version>${servicemix.kernel.version}</version>
+                <executions>
+                    <execution>
+                        <id>generate-depends-file</id>
+                        <goals>
+                            <goal>generate-depends-file</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-surefire-plugin</artifactId>
+                <configuration>
+                    <forkMode>pertest</forkMode>
+                    <systemProperties>
+                        <property>
+                            <name>javax.xml.parsers.DocumentBuilderFactory</name>
+                            <value>com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl</value>
+                        </property>
+                        <property>
+                            <name>javax.xml.datatype.DatatypeFactory</name>
+                            <value>com.sun.org.apache.xerces.internal.jaxp.datatype.DatatypeFactoryImpl</value>
+                        </property>
+                        <property>
+                            <name>javax.xml.parsers.SAXParserFactory</name>
+                            <value>com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl</value>
+                        </property>
+                    </systemProperties>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+
+</project>
\ No newline at end of file
diff --git a/cxf/cxf-transport-nmr/pom.xml b/cxf/cxf-transport-nmr/pom.xml
index e509846..9248bf4 100644
--- a/cxf/cxf-transport-nmr/pom.xml
+++ b/cxf/cxf-transport-nmr/pom.xml
@@ -1,135 +1,133 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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">
-
-    <!--
-
-        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.
-    -->
-
-    <modelVersion>4.0.0</modelVersion>
-
-    <parent>
-	    <groupId>org.apache.servicemix.cxf</groupId>
-	    <artifactId>cxf</artifactId>
-        <version>4.0-m1-SNAPSHOT</version>
-    </parent>
-
-    <groupId>org.apache.servicemix.cxf</groupId>
-    <artifactId>org.apache.servicemix.cxf.transport.nmr</artifactId>
-    <packaging>bundle</packaging>
-    <version>4.0-m1-SNAPSHOT</version>
-    <name>Apache ServiceMix CXF Transport for NMR</name>
-
-    <dependencies>
-        <dependency>
-            <groupId>org.apache.servicemix.nmr</groupId>
-            <artifactId>org.apache.servicemix.nmr.api</artifactId>
-            <version>${servicemix.nmr.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.servicemix.bundles</groupId>
-            <artifactId>org.apache.servicemix.bundles.cxf-2.0.5</artifactId>
-            <version>${pom.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.geronimo.specs</groupId>
-            <artifactId>geronimo-ws-metadata_2.0_spec</artifactId>
-            <version>${geronimo.wsmetadata.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.geronimo.specs</groupId>
-            <artifactId>geronimo-annotation_1.0_spec</artifactId>
-            <version>${geronimo.annotation.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.geronimo.specs</groupId>
-            <artifactId>geronimo-servlet_2.5_spec</artifactId>
-            <version>${geronimo.servlet.version}</version>
-        </dependency>
-    </dependencies>
-
-    <build>
-        <plugins>
-            <!-- Bundle generation -->
-            <plugin>
-                <groupId>org.apache.felix</groupId>
-                <artifactId>maven-bundle-plugin</artifactId>
-                <configuration>
-                    <instructions>
-                        <Bundle-SymbolicName>${pom.artifactId}</Bundle-SymbolicName>
-                        <Import-Package>
-                            javax.xml.rpc*;resolution:=optional,
-                            javax.xml.soap,
-                            com.ctc.wstx.stax;resolution:=optional,
-                            org.apache.axis.soap;resolution:=optional,
-                            org.apache.axis2.saaj;resolution:=optional,
-                            com.sun.xml.messaging.saaj.soap.ver1_1;resolution:=optional,
-                            com.sun.xml.messaging.saaj.client.p2p;resolution:=optional,
-                            com.sun.xml.messaging.saaj.soap;resolution:=optional,
-                            *
-                        </Import-Package>
-                        <!-- Needed for jaxb annotations classes -->
-                        <DynamicImport-Package>*</DynamicImport-Package>
-                        <Export-Package>
-                            ${pom.artifactId}*,
-                            '=META-INF.cxf.transport.nmr'
-                        </Export-Package>
-                        <Private-Package></Private-Package>
-                        <_failok>true</_failok>
-                        <Spring-Context>*;publish-context:=false</Spring-Context>
-                    </instructions>
-                </configuration>
-            </plugin>
-            <!-- generate dependencies versions -->
-            <plugin>
-		        <groupId>org.apache.servicemix.kernel.testing</groupId>
-		        <artifactId>depends-maven-plugin</artifactId>
-                <version>${servicemix.kernel.version}</version>
-                <executions>
-                    <execution>
-                        <id>generate-depends-file</id>
-                        <goals>
-                            <goal>generate-depends-file</goal>
-                        </goals>
-                    </execution>
-                </executions>
-            </plugin>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-surefire-plugin</artifactId>
-                <configuration>
-                    <forkMode>pertest</forkMode>
-                    <systemProperties>
-                        <property>
-                            <name>javax.xml.parsers.DocumentBuilderFactory</name>
-                            <value>com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl</value>
-                        </property>
-                        <property>
-                            <name>javax.xml.datatype.DatatypeFactory</name>
-                            <value>com.sun.org.apache.xerces.internal.jaxp.datatype.DatatypeFactoryImpl</value>
-                        </property>
-                        <property>
-                            <name>javax.xml.parsers.SAXParserFactory</name>
-                            <value>com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl</value>
-                        </property>
-                    </systemProperties>
-                </configuration>
-            </plugin>
-        </plugins>
-    </build>
-
-</project>
+<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">
+
+    <!--
+
+        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.
+    -->
+
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+	    <groupId>org.apache.servicemix.cxf</groupId>
+	    <artifactId>cxf</artifactId>
+        <version>4.0-m1</version>
+    </parent>
+
+    <groupId>org.apache.servicemix.cxf</groupId>
+    <artifactId>org.apache.servicemix.cxf.transport.nmr</artifactId>
+    <packaging>bundle</packaging>
+    <version>4.0-m1</version>
+    <name>Apache ServiceMix CXF Transport for NMR</name>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.servicemix.nmr</groupId>
+            <artifactId>org.apache.servicemix.nmr.api</artifactId>
+            <version>${servicemix.nmr.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.servicemix.bundles</groupId>
+            <artifactId>org.apache.servicemix.bundles.cxf-2.0.5</artifactId>
+            <version>${pom.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.geronimo.specs</groupId>
+            <artifactId>geronimo-ws-metadata_2.0_spec</artifactId>
+            <version>${geronimo.wsmetadata.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.geronimo.specs</groupId>
+            <artifactId>geronimo-annotation_1.0_spec</artifactId>
+            <version>${geronimo.annotation.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.geronimo.specs</groupId>
+            <artifactId>geronimo-servlet_2.5_spec</artifactId>
+            <version>${geronimo.servlet.version}</version>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <!-- Bundle generation -->
+            <plugin>
+                <groupId>org.apache.felix</groupId>
+                <artifactId>maven-bundle-plugin</artifactId>
+                <configuration>
+                    <instructions>
+                        <Bundle-SymbolicName>${pom.artifactId}</Bundle-SymbolicName>
+                        <Import-Package>
+                            javax.xml.rpc*;resolution:=optional,
+                            javax.xml.soap,
+                            com.ctc.wstx.stax;resolution:=optional,
+                            org.apache.axis.soap;resolution:=optional,
+                            org.apache.axis2.saaj;resolution:=optional,
+                            com.sun.xml.messaging.saaj.soap.ver1_1;resolution:=optional,
+                            com.sun.xml.messaging.saaj.client.p2p;resolution:=optional,
+                            com.sun.xml.messaging.saaj.soap;resolution:=optional,
+                            *
+                        </Import-Package>
+                        <!-- Needed for jaxb annotations classes -->
+                        <DynamicImport-Package>*</DynamicImport-Package>
+                        <Export-Package>
+                            ${pom.artifactId}*,
+                            '=META-INF.cxf.transport.nmr'
+                        </Export-Package>
+                        <Private-Package />
+                        <_failok>true</_failok>
+                        <Spring-Context>*;publish-context:=false</Spring-Context>
+                    </instructions>
+                </configuration>
+            </plugin>
+            <!-- generate dependencies versions -->
+            <plugin>
+		        <groupId>org.apache.servicemix.kernel.testing</groupId>
+		        <artifactId>depends-maven-plugin</artifactId>
+                <version>${servicemix.kernel.version}</version>
+                <executions>
+                    <execution>
+                        <id>generate-depends-file</id>
+                        <goals>
+                            <goal>generate-depends-file</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-surefire-plugin</artifactId>
+                <configuration>
+                    <forkMode>pertest</forkMode>
+                    <systemProperties>
+                        <property>
+                            <name>javax.xml.parsers.DocumentBuilderFactory</name>
+                            <value>com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl</value>
+                        </property>
+                        <property>
+                            <name>javax.xml.datatype.DatatypeFactory</name>
+                            <value>com.sun.org.apache.xerces.internal.jaxp.datatype.DatatypeFactoryImpl</value>
+                        </property>
+                        <property>
+                            <name>javax.xml.parsers.SAXParserFactory</name>
+                            <value>com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl</value>
+                        </property>
+                    </systemProperties>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+
+</project>
\ No newline at end of file
diff --git a/cxf/cxf-transport-osgi/pom.xml b/cxf/cxf-transport-osgi/pom.xml
index 16b7be1..e4aec15 100644
--- a/cxf/cxf-transport-osgi/pom.xml
+++ b/cxf/cxf-transport-osgi/pom.xml
@@ -1,138 +1,136 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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">
-
-    <!--
-
-        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.
-    -->
-
-    <modelVersion>4.0.0</modelVersion>
-
-    <parent>
-	    <groupId>org.apache.servicemix.cxf</groupId>
-	    <artifactId>cxf</artifactId>
-        <version>4.0-m1-SNAPSHOT</version>
-    </parent>
-
-    <groupId>org.apache.servicemix.cxf</groupId>
-    <artifactId>org.apache.servicemix.cxf.transport.osgi</artifactId>
-    <packaging>bundle</packaging>
-    <version>4.0-m1-SNAPSHOT</version>
-    <name>Apache ServiceMix CXF Transport for OSGi</name>
-
-    <dependencies>
-        <dependency>
-            <groupId>org.apache.felix</groupId>
-            <artifactId>org.osgi.compendium</artifactId>
-            <version>${felix.compendium.version}</version>
-            <scope>provided</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.servicemix.bundles</groupId>
-            <artifactId>org.apache.servicemix.bundles.cxf-2.0.5</artifactId>
-            <version>${pom.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.springframework</groupId>
-            <artifactId>spring-context</artifactId>
-            <version>${spring.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.geronimo.specs</groupId>
-            <artifactId>geronimo-ws-metadata_2.0_spec</artifactId>
-            <version>${geronimo.wsmetadata.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.geronimo.specs</groupId>
-            <artifactId>geronimo-annotation_1.0_spec</artifactId>
-            <version>${geronimo.annotation.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.geronimo.specs</groupId>
-            <artifactId>geronimo-servlet_2.5_spec</artifactId>
-            <version>${geronimo.servlet.version}</version>
-        </dependency>
-    </dependencies>
-
-    <build>
-        <plugins>
-            <!-- Bundle generation -->
-            <plugin>
-                <groupId>org.apache.felix</groupId>
-                <artifactId>maven-bundle-plugin</artifactId>
-                <configuration>
-                    <instructions>
-                        <Bundle-SymbolicName>${pom.artifactId}</Bundle-SymbolicName>
-                        <Import-Package>
-                            javax.xml.rpc*;resolution:=optional,
-                            javax.xml.soap,
-                            com.ctc.wstx.stax;resolution:=optional,
-                            org.apache.axis.soap;resolution:=optional,
-                            org.apache.axis2.saaj;resolution:=optional,
-                            com.sun.xml.messaging.saaj.soap.ver1_1;resolution:=optional,
-                            com.sun.xml.messaging.saaj.client.p2p;resolution:=optional,
-                            com.sun.xml.messaging.saaj.soap;resolution:=optional,
-                            *
-                        </Import-Package>
-                        <Export-Package>
-                            org.apache.servicemix.cxf.transport.http_osgi,
-                            '=META-INF.cxf.osgi'
-                        </Export-Package>
-                        <_failok>true</_failok>
-                        <Spring-Context>*;publish-context:=false</Spring-Context>
-                    </instructions>
-                </configuration>
-            </plugin>
-            <!-- generate dependencies versions -->
-            <plugin>
-		        <groupId>org.apache.servicemix.kernel.testing</groupId>
-		        <artifactId>depends-maven-plugin</artifactId>
-                <version>${servicemix.kernel.version}</version>
-                <executions>
-                    <execution>
-                        <id>generate-depends-file</id>
-                        <goals>
-                            <goal>generate-depends-file</goal>
-                        </goals>
-                    </execution>
-                </executions>
-            </plugin>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-surefire-plugin</artifactId>
-                <configuration>
-                    <forkMode>pertest</forkMode>
-                    <systemProperties>
-                        <property>
-                            <name>javax.xml.parsers.DocumentBuilderFactory</name>
-                            <value>com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl</value>
-                        </property>
-                        <property>
-                            <name>javax.xml.datatype.DatatypeFactory</name>
-                            <value>com.sun.org.apache.xerces.internal.jaxp.datatype.DatatypeFactoryImpl</value>
-                        </property>
-                        <property>
-                            <name>javax.xml.parsers.SAXParserFactory</name>
-                            <value>com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl</value>
-                        </property>
-                    </systemProperties>
-                </configuration>
-            </plugin>
-        </plugins>
-    </build>
-
-</project>
+<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">
+
+    <!--
+
+        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.
+    -->
+
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+	    <groupId>org.apache.servicemix.cxf</groupId>
+	    <artifactId>cxf</artifactId>
+        <version>4.0-m1</version>
+    </parent>
+
+    <groupId>org.apache.servicemix.cxf</groupId>
+    <artifactId>org.apache.servicemix.cxf.transport.osgi</artifactId>
+    <packaging>bundle</packaging>
+    <version>4.0-m1</version>
+    <name>Apache ServiceMix CXF Transport for OSGi</name>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.felix</groupId>
+            <artifactId>org.osgi.compendium</artifactId>
+            <version>${felix.compendium.version}</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.servicemix.bundles</groupId>
+            <artifactId>org.apache.servicemix.bundles.cxf-2.0.5</artifactId>
+            <version>${pom.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework</groupId>
+            <artifactId>spring-context</artifactId>
+            <version>${spring.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.geronimo.specs</groupId>
+            <artifactId>geronimo-ws-metadata_2.0_spec</artifactId>
+            <version>${geronimo.wsmetadata.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.geronimo.specs</groupId>
+            <artifactId>geronimo-annotation_1.0_spec</artifactId>
+            <version>${geronimo.annotation.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.geronimo.specs</groupId>
+            <artifactId>geronimo-servlet_2.5_spec</artifactId>
+            <version>${geronimo.servlet.version}</version>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <!-- Bundle generation -->
+            <plugin>
+                <groupId>org.apache.felix</groupId>
+                <artifactId>maven-bundle-plugin</artifactId>
+                <configuration>
+                    <instructions>
+                        <Bundle-SymbolicName>${pom.artifactId}</Bundle-SymbolicName>
+                        <Import-Package>
+                            javax.xml.rpc*;resolution:=optional,
+                            javax.xml.soap,
+                            com.ctc.wstx.stax;resolution:=optional,
+                            org.apache.axis.soap;resolution:=optional,
+                            org.apache.axis2.saaj;resolution:=optional,
+                            com.sun.xml.messaging.saaj.soap.ver1_1;resolution:=optional,
+                            com.sun.xml.messaging.saaj.client.p2p;resolution:=optional,
+                            com.sun.xml.messaging.saaj.soap;resolution:=optional,
+                            *
+                        </Import-Package>
+                        <Export-Package>
+                            org.apache.servicemix.cxf.transport.http_osgi,
+                            '=META-INF.cxf.osgi'
+                        </Export-Package>
+                        <_failok>true</_failok>
+                        <Spring-Context>*;publish-context:=false</Spring-Context>
+                    </instructions>
+                </configuration>
+            </plugin>
+            <!-- generate dependencies versions -->
+            <plugin>
+		        <groupId>org.apache.servicemix.kernel.testing</groupId>
+		        <artifactId>depends-maven-plugin</artifactId>
+                <version>${servicemix.kernel.version}</version>
+                <executions>
+                    <execution>
+                        <id>generate-depends-file</id>
+                        <goals>
+                            <goal>generate-depends-file</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-surefire-plugin</artifactId>
+                <configuration>
+                    <forkMode>pertest</forkMode>
+                    <systemProperties>
+                        <property>
+                            <name>javax.xml.parsers.DocumentBuilderFactory</name>
+                            <value>com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl</value>
+                        </property>
+                        <property>
+                            <name>javax.xml.datatype.DatatypeFactory</name>
+                            <value>com.sun.org.apache.xerces.internal.jaxp.datatype.DatatypeFactoryImpl</value>
+                        </property>
+                        <property>
+                            <name>javax.xml.parsers.SAXParserFactory</name>
+                            <value>com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl</value>
+                        </property>
+                    </systemProperties>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+
+</project>
\ No newline at end of file
diff --git a/cxf/pom.xml b/cxf/pom.xml
index f875d49..d7ac66f 100644
--- a/cxf/pom.xml
+++ b/cxf/pom.xml
@@ -1,44 +1,42 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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">
-
-    <!--
-
-        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.
-    -->
-
-    <modelVersion>4.0.0</modelVersion>
-
-    <parent>
-        <groupId>org.apache.servicemix.features</groupId>
-        <artifactId>features</artifactId>
-        <version>4.0-m1-SNAPSHOT</version>
-    </parent>
-
-    <groupId>org.apache.servicemix.cxf</groupId>
-    <artifactId>cxf</artifactId>
-    <packaging>pom</packaging>
-    <version>4.0-m1-SNAPSHOT</version>
-    <name>Apache ServiceMix CXF Support</name>
-
-    <modules>
-        <module>bundles</module>
-        <module>cxf-transport-nmr</module>
-        <module>cxf-transport-osgi</module>
-        <module>cxf-binding-nmr</module>
-    </modules>
-
-</project>
+<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">
+
+    <!--
+
+        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.
+    -->
+
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.apache.servicemix.features</groupId>
+        <artifactId>features</artifactId>
+        <version>4.0-m1</version>
+    </parent>
+
+    <groupId>org.apache.servicemix.cxf</groupId>
+    <artifactId>cxf</artifactId>
+    <packaging>pom</packaging>
+    <version>4.0-m1</version>
+    <name>Apache ServiceMix CXF Support</name>
+
+    <modules>
+        <module>bundles</module>
+        <module>cxf-transport-nmr</module>
+        <module>cxf-transport-osgi</module>
+        <module>cxf-binding-nmr</module>
+    </modules>
+
+</project>
\ No newline at end of file
diff --git a/examples/camel-nmr/pom.xml b/examples/camel-nmr/pom.xml
index edcac11..bbc8cfc 100644
--- a/examples/camel-nmr/pom.xml
+++ b/examples/camel-nmr/pom.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<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">
+<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">
 
     <!--
 
@@ -25,13 +24,13 @@
     <parent>
         <groupId>org.apache.servicemix.examples</groupId>
         <artifactId>examples</artifactId>
-        <version>4.0-m1-SNAPSHOT</version>
+        <version>4.0-m1</version>
     </parent>
 
     <groupId>org.apache.servicemix.examples</groupId>
     <artifactId>camel-nmr</artifactId>
     <packaging>bundle</packaging>
-    <version>4.0-m1-SNAPSHOT</version>
+    <version>4.0-m1</version>
     <name>Apache ServiceMix Example :: Camel NMR</name>
 
     <dependencies>
diff --git a/examples/camel-osgi/pom.xml b/examples/camel-osgi/pom.xml
index 80d5a78..a303ddc 100644
--- a/examples/camel-osgi/pom.xml
+++ b/examples/camel-osgi/pom.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<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">
+<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">
 
     <!--
 
@@ -25,13 +24,13 @@
     <parent>
         <groupId>org.apache.servicemix.examples</groupId>
         <artifactId>examples</artifactId>
-        <version>4.0-m1-SNAPSHOT</version>
+        <version>4.0-m1</version>
     </parent>
 
     <groupId>org.apache.servicemix.examples</groupId>
     <artifactId>camel-osgi</artifactId>
     <packaging>bundle</packaging>
-    <version>4.0-m1-SNAPSHOT</version>
+    <version>4.0-m1</version>
     <name>Apache ServiceMix Example :: Camel OSGi</name>
 
     <dependencies>
diff --git a/examples/cxf-camel-nmr/pom.xml b/examples/cxf-camel-nmr/pom.xml
index 9cb9e93..21c710a 100644
--- a/examples/cxf-camel-nmr/pom.xml
+++ b/examples/cxf-camel-nmr/pom.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<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">
+<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">
 
     <!--
 
@@ -25,13 +24,13 @@
     <parent>
         <groupId>org.apache.servicemix.examples</groupId>
         <artifactId>examples</artifactId>
-        <version>4.0-m1-SNAPSHOT</version>
+        <version>4.0-m1</version>
     </parent>
 
     <groupId>org.apache.servicemix.examples</groupId>
     <artifactId>cxf-camel-nmr</artifactId>
     <packaging>bundle</packaging>
-    <version>4.0-m1-SNAPSHOT</version>
+    <version>4.0-m1</version>
     <name>Apache ServiceMix Example :: CXF-Camel NMR</name>
 
     <dependencies>
diff --git a/examples/cxf-nmr/pom.xml b/examples/cxf-nmr/pom.xml
index 0f46c94..8fec03e 100644
--- a/examples/cxf-nmr/pom.xml
+++ b/examples/cxf-nmr/pom.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<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">
+<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">
 
     <!--
 
@@ -25,13 +24,13 @@
     <parent>
         <groupId>org.apache.servicemix.examples</groupId>
         <artifactId>examples</artifactId>
-        <version>4.0-m1-SNAPSHOT</version>
+        <version>4.0-m1</version>
     </parent>
 
     <groupId>org.apache.servicemix.examples</groupId>
     <artifactId>cxf-nmr</artifactId>
     <packaging>bundle</packaging>
-    <version>4.0-m1-SNAPSHOT</version>
+    <version>4.0-m1</version>
     <name>Apache ServiceMix Example :: CXF NMR</name>
 
     <dependencies>
diff --git a/examples/cxf-osgi/pom.xml b/examples/cxf-osgi/pom.xml
index 5f2d8db..7a364d4 100644
--- a/examples/cxf-osgi/pom.xml
+++ b/examples/cxf-osgi/pom.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<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">
+<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">
 
     <!--
 
@@ -25,13 +24,13 @@
     <parent>
         <groupId>org.apache.servicemix.examples</groupId>
         <artifactId>examples</artifactId>
-        <version>4.0-m1-SNAPSHOT</version>
+        <version>4.0-m1</version>
     </parent>
 
     <groupId>org.apache.servicemix.examples</groupId>
     <artifactId>cxf-osgi</artifactId>
     <packaging>bundle</packaging>
-    <version>4.0-m1-SNAPSHOT</version>
+    <version>4.0-m1</version>
     <name>Apache ServiceMix Example :: CXF OSGi</name>
 
     <dependencies>
diff --git a/examples/pom.xml b/examples/pom.xml
index 12fa478..2723b87 100644
--- a/examples/pom.xml
+++ b/examples/pom.xml
@@ -1,45 +1,43 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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">
-
-    <!--
-
-        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.
-    -->
-
-    <modelVersion>4.0.0</modelVersion>
-
-    <parent>
-        <groupId>org.apache.servicemix.features</groupId>
-        <artifactId>features</artifactId>
-        <version>4.0-m1-SNAPSHOT</version>
-    </parent>
-
-    <groupId>org.apache.servicemix.examples</groupId>
-    <artifactId>examples</artifactId>
-    <packaging>pom</packaging>
-    <version>4.0-m1-SNAPSHOT</version>
-    <name>Apache ServiceMix Examples</name>
-
-    <modules>
-        <module>camel-nmr</module>
-        <module>camel-osgi</module>
-        <module>cxf-camel-nmr</module>
-        <module>cxf-nmr</module>
-        <module>cxf-osgi</module>
-    </modules>
-
-</project>
+<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">
+
+    <!--
+
+        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.
+    -->
+
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.apache.servicemix.features</groupId>
+        <artifactId>features</artifactId>
+        <version>4.0-m1</version>
+    </parent>
+
+    <groupId>org.apache.servicemix.examples</groupId>
+    <artifactId>examples</artifactId>
+    <packaging>pom</packaging>
+    <version>4.0-m1</version>
+    <name>Apache ServiceMix Examples</name>
+
+    <modules>
+        <module>camel-nmr</module>
+        <module>camel-osgi</module>
+        <module>cxf-camel-nmr</module>
+        <module>cxf-nmr</module>
+        <module>cxf-osgi</module>
+    </modules>
+
+</project>
\ No newline at end of file
diff --git a/management/acegi/pom.xml b/management/acegi/pom.xml
index b8e4e31..06b3b00 100644
--- a/management/acegi/pom.xml
+++ b/management/acegi/pom.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<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">
+<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">
 
     <!--
 
@@ -25,13 +24,13 @@
     <parent>
 	    <groupId>org.apache.servicemix.management</groupId>
 	    <artifactId>management</artifactId>
-        <version>4.0-m1-SNAPSHOT</version>
+        <version>4.0-m1</version>
     </parent>
 
     <groupId>org.apache.servicemix.management</groupId>
     <artifactId>org.apache.servicemix.management.acegi</artifactId>
     <packaging>bundle</packaging>
-    <version>4.0-m1-SNAPSHOT</version>
+    <version>4.0-m1</version>
     <name>Apache ServiceMix Management Acegi</name>
 
     <dependencies>
diff --git a/management/core/pom.xml b/management/core/pom.xml
index 543dabf..f143fdd 100644
--- a/management/core/pom.xml
+++ b/management/core/pom.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<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">
+<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">
 
     <!--
 
@@ -25,13 +24,13 @@
     <parent>
 	    <groupId>org.apache.servicemix.management</groupId>
 	    <artifactId>management</artifactId>
-        <version>4.0-m1-SNAPSHOT</version>
+        <version>4.0-m1</version>
     </parent>
 
     <groupId>org.apache.servicemix.management</groupId>
     <artifactId>org.apache.servicemix.management.core</artifactId>
     <packaging>bundle</packaging>
-    <version>4.0-m1-SNAPSHOT</version>
+    <version>4.0-m1</version>
     <name>Apache ServiceMix Management Core</name>
 
     <dependencies>
diff --git a/management/pom.xml b/management/pom.xml
index 7442165..cc007bc 100644
--- a/management/pom.xml
+++ b/management/pom.xml
@@ -1,42 +1,40 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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">
-
-    <!--
-
-        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.
-    -->
-
-    <modelVersion>4.0.0</modelVersion>
-
-    <parent>
-        <groupId>org.apache.servicemix.features</groupId>
-        <artifactId>features</artifactId>
-        <version>4.0-m1-SNAPSHOT</version>
-    </parent>
-
-    <groupId>org.apache.servicemix.management</groupId>
-    <artifactId>management</artifactId>
-    <packaging>pom</packaging>
-    <version>4.0-m1-SNAPSHOT</version>
-    <name>Apache ServiceMix Features :: Management</name>
-
-    <modules>
-        <module>core</module>
-        <module>acegi</module>
-    </modules>
-
-</project>
+<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">
+
+    <!--
+
+        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.
+    -->
+
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.apache.servicemix.features</groupId>
+        <artifactId>features</artifactId>
+        <version>4.0-m1</version>
+    </parent>
+
+    <groupId>org.apache.servicemix.management</groupId>
+    <artifactId>management</artifactId>
+    <packaging>pom</packaging>
+    <version>4.0-m1</version>
+    <name>Apache ServiceMix Features :: Management</name>
+
+    <modules>
+        <module>core</module>
+        <module>acegi</module>
+    </modules>
+
+</project>
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index cb70e37..107355d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -30,7 +30,7 @@
   <groupId>org.apache.servicemix.features</groupId>
   <artifactId>features</artifactId>
   <packaging>pom</packaging>
-  <version>4.0-m1-SNAPSHOT</version>
+  <version>4.0-m1</version>
   <name>Apache ServiceMix Features</name>
   <inceptionYear>2005</inceptionYear>
 
@@ -46,9 +46,9 @@
   </modules>
 
   <scm>
-      <connection>scm:svn:http://svn.apache.org/repos/asf/servicemix/smx4/features/trunk</connection>
-      <developerConnection>scm:svn:https://svn.apache.org/repos/asf/servicemix/smx4/features/trunk</developerConnection>
-      <url>http://svn.apache.org/viewvc/servicemix/smx4/features/trunk/</url>
+      <connection>scm:svn:http://svn.apache.org/repos/asf/servicemix/smx4/features/tags/features-4.0-m1</connection>
+      <developerConnection>scm:svn:https://svn.apache.org/repos/asf/servicemix/smx4/features/tags/features-4.0-m1</developerConnection>
+      <url>http://svn.apache.org/viewvc/servicemix/smx4/features/tags/features-4.0-m1</url>
   </scm>
   <issueManagement>
       <system>jira</system>
@@ -113,7 +113,7 @@
       <pax.url.version>0.3.0</pax.url.version>
       <pax.web.version>0.4.1</pax.web.version>
       <pax.web.extender.version>0.3.0</pax.web.extender.version>
-      <servicemix.legal.version>1.0-SNAPSHOT</servicemix.legal.version>
+      <servicemix.legal.version>1.0</servicemix.legal.version>
       <servicemix.kernel.version>1.0-m2</servicemix.kernel.version>
       <servicemix.nmr.version>1.0-m1</servicemix.nmr.version>
       <spring.version>2.5.1</spring.version>
diff --git a/transaction/bundles/howl/pom.xml b/transaction/bundles/howl/pom.xml
index 3e02d01..81f47aa 100644
--- a/transaction/bundles/howl/pom.xml
+++ b/transaction/bundles/howl/pom.xml
@@ -1,57 +1,55 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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">
-
-    <!--
-
-        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.
-    -->
-
-    <modelVersion>4.0.0</modelVersion>
-
-    <parent>
-        <groupId>org.apache.servicemix.transaction.bundles</groupId>
-        <artifactId>bundles</artifactId>
-        <version>4.0-m1-SNAPSHOT</version>
-    </parent>
-
-    <groupId>org.apache.servicemix.bundles</groupId>
-    <artifactId>org.apache.servicemix.bundles.howl-1.0.1-1</artifactId>
-    <version>4.0-m1-SNAPSHOT</version>
-    <packaging>bundle</packaging>
-    <name>Apache ServiceMix OSGI Common Bundles: ${pkgArtifactId}</name>
-    <description>
-        This bundle simply wraps ${pkgArtifactId}-${pkgVersion}.jar.
-    </description>
-
-    <properties>
-        <pkgArtifactId>howl</pkgArtifactId>
-        <pkgVersion>1.0.1-1</pkgVersion>
-        <servicemix.osgi.export.pkg>org.objectweb.howl</servicemix.osgi.export.pkg>
-        <servicemix.osgi.import.pkg>
-            *
-        </servicemix.osgi.import.pkg>
-    </properties>
-
-    <dependencies>
-        <dependency>
-            <groupId>org.objectweb.howl</groupId>
-            <artifactId>${pkgArtifactId}</artifactId>
-            <version>${pkgVersion}</version>
-            <optional>true</optional>
-        </dependency>
-    </dependencies>
-</project>
+<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">
+
+    <!--
+
+        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.
+    -->
+
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.apache.servicemix.transaction.bundles</groupId>
+        <artifactId>bundles</artifactId>
+        <version>4.0-m1</version>
+    </parent>
+
+    <groupId>org.apache.servicemix.bundles</groupId>
+    <artifactId>org.apache.servicemix.bundles.howl-1.0.1-1</artifactId>
+    <version>4.0-m1</version>
+    <packaging>bundle</packaging>
+    <name>Apache ServiceMix OSGI Common Bundles: ${pkgArtifactId}</name>
+    <description>
+        This bundle simply wraps ${pkgArtifactId}-${pkgVersion}.jar.
+    </description>
+
+    <properties>
+        <pkgArtifactId>howl</pkgArtifactId>
+        <pkgVersion>1.0.1-1</pkgVersion>
+        <servicemix.osgi.export.pkg>org.objectweb.howl</servicemix.osgi.export.pkg>
+        <servicemix.osgi.import.pkg>
+            *
+        </servicemix.osgi.import.pkg>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.objectweb.howl</groupId>
+            <artifactId>${pkgArtifactId}</artifactId>
+            <version>${pkgVersion}</version>
+            <optional>true</optional>
+        </dependency>
+    </dependencies>
+</project>
\ No newline at end of file
diff --git a/transaction/bundles/jencks/pom.xml b/transaction/bundles/jencks/pom.xml
index 42ad5fb..7ae5de2 100644
--- a/transaction/bundles/jencks/pom.xml
+++ b/transaction/bundles/jencks/pom.xml
@@ -1,67 +1,65 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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">
-
-    <!--
-
-        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.
-    -->
-
-    <modelVersion>4.0.0</modelVersion>
-
-    <parent>
-        <groupId>org.apache.servicemix.transaction.bundles</groupId>
-        <artifactId>bundles</artifactId>
-        <version>4.0-m1-SNAPSHOT</version>
-    </parent>
-
-    <groupId>org.apache.servicemix.bundles</groupId>
-    <artifactId>org.apache.servicemix.bundles.jencks-2.1</artifactId>
-    <version>4.0-m1-SNAPSHOT</version>
-    <packaging>bundle</packaging>
-    <name>Apache ServiceMix OSGI Common Bundles: ${pkgArtifactId}</name>
-    <description>
-        This bundle simply wraps ${pkgArtifactId}-${pkgVersion}.jar.
-    </description>
-
-    <properties>
-        <pkgArtifactId>jencks</pkgArtifactId>
-        <pkgVersion>2.1</pkgVersion>
-        <servicemix.osgi.export.pkg>org.jencks</servicemix.osgi.export.pkg>
-        <servicemix.osgi.import.pkg>
-            org.aopalliance*;resolution:=optional,
-            org.apache.commons.pool*;resolution:=optional,
-            org.enhydra*;resolution:=optional,
-            org.tranql.connector*;resolution:=optional,
-            *
-        </servicemix.osgi.import.pkg>
-    </properties>
-
-    <dependencies>
-        <dependency>
-            <groupId>org.jencks</groupId>
-            <artifactId>${pkgArtifactId}</artifactId>
-            <version>${pkgVersion}</version>
-            <optional>true</optional>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.geronimo.specs</groupId>
-            <artifactId>geronimo-j2ee-connector_1.5_spec</artifactId>
-            <version>${geronimo.j2ee.connector.version}</version>
-            <optional>true</optional>
-        </dependency>
-    </dependencies>
-</project>
+<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">
+
+    <!--
+
+        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.
+    -->
+
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.apache.servicemix.transaction.bundles</groupId>
+        <artifactId>bundles</artifactId>
+        <version>4.0-m1</version>
+    </parent>
+
+    <groupId>org.apache.servicemix.bundles</groupId>
+    <artifactId>org.apache.servicemix.bundles.jencks-2.1</artifactId>
+    <version>4.0-m1</version>
+    <packaging>bundle</packaging>
+    <name>Apache ServiceMix OSGI Common Bundles: ${pkgArtifactId}</name>
+    <description>
+        This bundle simply wraps ${pkgArtifactId}-${pkgVersion}.jar.
+    </description>
+
+    <properties>
+        <pkgArtifactId>jencks</pkgArtifactId>
+        <pkgVersion>2.1</pkgVersion>
+        <servicemix.osgi.export.pkg>org.jencks</servicemix.osgi.export.pkg>
+        <servicemix.osgi.import.pkg>
+            org.aopalliance*;resolution:=optional,
+            org.apache.commons.pool*;resolution:=optional,
+            org.enhydra*;resolution:=optional,
+            org.tranql.connector*;resolution:=optional,
+            *
+        </servicemix.osgi.import.pkg>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.jencks</groupId>
+            <artifactId>${pkgArtifactId}</artifactId>
+            <version>${pkgVersion}</version>
+            <optional>true</optional>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.geronimo.specs</groupId>
+            <artifactId>geronimo-j2ee-connector_1.5_spec</artifactId>
+            <version>${geronimo.j2ee.connector.version}</version>
+            <optional>true</optional>
+        </dependency>
+    </dependencies>
+</project>
\ No newline at end of file
diff --git a/transaction/bundles/pom.xml b/transaction/bundles/pom.xml
index aed053f..5dfb70b 100644
--- a/transaction/bundles/pom.xml
+++ b/transaction/bundles/pom.xml
@@ -23,13 +23,13 @@
     <parent>
         <groupId>org.apache.servicemix.transaction</groupId>
         <artifactId>transaction</artifactId>
-        <version>4.0-m1-SNAPSHOT</version>
+        <version>4.0-m1</version>
     </parent>
 
     <groupId>org.apache.servicemix.transaction.bundles</groupId>
     <artifactId>bundles</artifactId>
     <packaging>pom</packaging>
-    <version>4.0-m1-SNAPSHOT</version>
+    <version>4.0-m1</version>
     <name>Apache ServiceMix OSGI Common Bundles</name>
 
     <modules>
diff --git a/transaction/pom.xml b/transaction/pom.xml
index b7f3f7a..8055041 100644
--- a/transaction/pom.xml
+++ b/transaction/pom.xml
@@ -24,13 +24,13 @@
     <parent>
         <groupId>org.apache.servicemix.features</groupId>
         <artifactId>features</artifactId>
-        <version>4.0-m1-SNAPSHOT</version>
+        <version>4.0-m1</version>
     </parent>
 
     <groupId>org.apache.servicemix.transaction</groupId>
     <artifactId>transaction</artifactId>
     <packaging>pom</packaging>
-    <version>4.0-m1-SNAPSHOT</version>
+    <version>4.0-m1</version>
     <name>Apache ServiceMix Features :: Transaction</name> 
 
     <modules>
diff --git a/transaction/transaction/pom.xml b/transaction/transaction/pom.xml
index d85f533..fd78fb0 100644
--- a/transaction/transaction/pom.xml
+++ b/transaction/transaction/pom.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<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">
+<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">
 
     <!--
 
@@ -25,13 +24,13 @@
     <parent>
         <groupId>org.apache.servicemix.transaction</groupId>
         <artifactId>transaction</artifactId>
-        <version>4.0-m1-SNAPSHOT</version>
+        <version>4.0-m1</version>
     </parent>
 
     <groupId>org.apache.servicemix.transaction</groupId>
     <artifactId>org.apache.servicemix.transaction</artifactId>
     <packaging>bundle</packaging>
-    <version>4.0-m1-SNAPSHOT</version>
+    <version>4.0-m1</version>
     <name>Apache ServiceMix Features :: Transaction</name> 
 
     <dependencies>
diff --git a/war/bundles/jasper/pom.xml b/war/bundles/jasper/pom.xml
index bf8da22..5da2f64 100644
--- a/war/bundles/jasper/pom.xml
+++ b/war/bundles/jasper/pom.xml
@@ -1,68 +1,66 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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">
-
-    <!--
-
-        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.
-    -->
-
-    <modelVersion>4.0.0</modelVersion>
-
-    <parent>
-        <groupId>org.apache.servicemix.war.bundles</groupId>
-        <artifactId>bundles</artifactId>
-        <version>4.0-m1-SNAPSHOT</version>
-    </parent>
-
-    <groupId>org.apache.servicemix.bundles</groupId>
-    <artifactId>${pom.groupId}.${pkgArtifactId}-${pkgVersion}</artifactId>
-    <version>4.0-m1-SNAPSHOT</version>
-    <packaging>bundle</packaging>
-    <name>Apache ServiceMix OSGI Common Bundles: ${pkgArtifactId}</name>
-    <description>
-        This bundle simply wraps ${pkgArtifactId}-${pkgVersion}.jar.
-    </description>
-
-    <properties>
-        <pkgArtifactId>jasper</pkgArtifactId>
-        <pkgVersion>${jasper.version}</pkgVersion>
-        <servicemix.osgi.export.pkg>org.apache,org.apache.jasper*</servicemix.osgi.export.pkg>
-        <servicemix.osgi.import.pkg>
-            javax*;resolution:=optional,
-            javax.servlet.jsp.resources;resolution:=optional,
-            org.apache*;resolution:=optional,
-            org.apache.tools.ant*;resolution:=optional,
-            org.eclipse.jdt*;resolution:=optional,
-            *
-        </servicemix.osgi.import.pkg>
-    </properties>
-
-    <dependencies>
-        <dependency>
-            <groupId>org.apache.tomcat</groupId>
-            <artifactId>${pkgArtifactId}</artifactId>
-            <version>${pkgVersion}</version>
-            <optional>true</optional>
-        </dependency>
-        <dependency>
-            <groupId>junit</groupId>
-            <artifactId>junit</artifactId>
-            <version>${junit.version}</version>
-            <scope>test</scope>
-        </dependency>
-    </dependencies>
-</project>
+<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">
+
+    <!--
+
+        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.
+    -->
+
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.apache.servicemix.war.bundles</groupId>
+        <artifactId>bundles</artifactId>
+        <version>4.0-m1</version>
+    </parent>
+
+    <groupId>org.apache.servicemix.bundles</groupId>
+    <artifactId>${pom.groupId}.${pkgArtifactId}-${pkgVersion}</artifactId>
+    <version>4.0-m1</version>
+    <packaging>bundle</packaging>
+    <name>Apache ServiceMix OSGI Common Bundles: ${pkgArtifactId}</name>
+    <description>
+        This bundle simply wraps ${pkgArtifactId}-${pkgVersion}.jar.
+    </description>
+
+    <properties>
+        <pkgArtifactId>jasper</pkgArtifactId>
+        <pkgVersion>${jasper.version}</pkgVersion>
+        <servicemix.osgi.export.pkg>org.apache,org.apache.jasper*</servicemix.osgi.export.pkg>
+        <servicemix.osgi.import.pkg>
+            javax*;resolution:=optional,
+            javax.servlet.jsp.resources;resolution:=optional,
+            org.apache*;resolution:=optional,
+            org.apache.tools.ant*;resolution:=optional,
+            org.eclipse.jdt*;resolution:=optional,
+            *
+        </servicemix.osgi.import.pkg>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.tomcat</groupId>
+            <artifactId>${pkgArtifactId}</artifactId>
+            <version>${pkgVersion}</version>
+            <optional>true</optional>
+        </dependency>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <version>${junit.version}</version>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+</project>
\ No newline at end of file
diff --git a/war/bundles/pom.xml b/war/bundles/pom.xml
index 6be4bb6..f0fd40d 100644
--- a/war/bundles/pom.xml
+++ b/war/bundles/pom.xml
@@ -23,13 +23,13 @@
     <parent>
         <groupId>org.apache.servicemix.war</groupId>
         <artifactId>war</artifactId>
-        <version>4.0-m1-SNAPSHOT</version>
+        <version>4.0-m1</version>
     </parent>
 
     <groupId>org.apache.servicemix.war.bundles</groupId>
     <artifactId>bundles</artifactId>
     <packaging>pom</packaging>
-    <version>4.0-m1-SNAPSHOT</version>
+    <version>4.0-m1</version>
     <name>Apache ServiceMix OSGI Common Bundles</name>
 
     <modules>
diff --git a/war/deployer/pom.xml b/war/deployer/pom.xml
index 425e7a9..09d7cd5 100644
--- a/war/deployer/pom.xml
+++ b/war/deployer/pom.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<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">
+<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">
 
     <!--
 
@@ -25,13 +24,13 @@
     <parent>
         <groupId>org.apache.servicemix.war</groupId>
         <artifactId>war</artifactId>
-        <version>4.0-m1-SNAPSHOT</version>
+        <version>4.0-m1</version>
     </parent>
 
     <groupId>org.apache.servicemix.war</groupId>
     <artifactId>org.apache.servicemix.war.deployer</artifactId>
     <packaging>bundle</packaging>
-    <version>4.0-m1-SNAPSHOT</version>
+    <version>4.0-m1</version>
     <name>Apache ServiceMix WAR Deployer</name>
 
     <dependencies>
diff --git a/war/pom.xml b/war/pom.xml
index ceecbb0..f78152d 100644
--- a/war/pom.xml
+++ b/war/pom.xml
@@ -1,42 +1,40 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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">
-
-    <!--
-
-        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.
-    -->
-
-    <modelVersion>4.0.0</modelVersion>
-
-    <parent>
-        <groupId>org.apache.servicemix.features</groupId>
-        <artifactId>features</artifactId>
-        <version>4.0-m1-SNAPSHOT</version>
-    </parent>
-
-    <groupId>org.apache.servicemix.war</groupId>
-    <artifactId>war</artifactId>
-    <packaging>pom</packaging>
-    <version>4.0-m1-SNAPSHOT</version>
-    <name>Apache ServiceMix WAR Support</name>
-
-    <modules>
-        <module>bundles</module>
-        <module>deployer</module>
-    </modules>
-
-</project>
+<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">
+
+    <!--
+
+        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.
+    -->
+
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.apache.servicemix.features</groupId>
+        <artifactId>features</artifactId>
+        <version>4.0-m1</version>
+    </parent>
+
+    <groupId>org.apache.servicemix.war</groupId>
+    <artifactId>war</artifactId>
+    <packaging>pom</packaging>
+    <version>4.0-m1</version>
+    <name>Apache ServiceMix WAR Support</name>
+
+    <modules>
+        <module>bundles</module>
+        <module>deployer</module>
+    </modules>
+
+</project>
\ No newline at end of file
