diff --git a/karaf/webconsole/branding/pom.xml b/karaf/webconsole/branding/pom.xml
index 7cac768..b2ed4d4 100644
--- a/karaf/webconsole/branding/pom.xml
+++ b/karaf/webconsole/branding/pom.xml
@@ -1,64 +1,63 @@
-<?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.felix.karaf.webconsole</groupId>
-        <artifactId>webconsole</artifactId>
-        <version>0.9.0-SNAPSHOT</version>
-    </parent>
-
-    <groupId>org.apache.felix.karaf.webconsole</groupId>
-    <artifactId>org.apache.felix.karaf.webconsole.branding</artifactId>
-    <packaging>bundle</packaging>
-    <version>0.9.0-SNAPSHOT</version>
-    <name>Apache Felix Karaf :: Web Console :: Branding</name>
-
-    <description>Apache Felix Karaf branding for the Apache Felix Web Console. This fragment
-        attaches to the org.apache.felix.webconsole bundle to provide branding
-        through the /META-INF/webconsole.properties.
-    </description>
-
-    <properties>
-        <appendedResourcesDirectory>${basedir}/../../etc/appended-resources</appendedResourcesDirectory>
-    </properties>
-
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.felix</groupId>
-                <artifactId>maven-bundle-plugin</artifactId>
-                <extensions>true</extensions>
-                <configuration>
-                    <instructions>
-                        <Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
-                        <Bundle-DocURL>http://felix.apache.org/site/apache-felix-karaf.html</Bundle-DocURL>
-                        <Fragment-Host>org.apache.felix.webconsole</Fragment-Host>
-                        <Export-Package>!*</Export-Package>
-                    </instructions>
-                </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.felix.karaf.webconsole</groupId>
+        <artifactId>webconsole</artifactId>
+        <version>1.0.0</version>
+    </parent>
+
+    <groupId>org.apache.felix.karaf.webconsole</groupId>
+    <artifactId>org.apache.felix.karaf.webconsole.branding</artifactId>
+    <packaging>bundle</packaging>
+    <version>1.0.0</version>
+    <name>Apache Felix Karaf :: Web Console :: Branding</name>
+
+    <description>Apache Felix Karaf branding for the Apache Felix Web Console. This fragment
+        attaches to the org.apache.felix.webconsole bundle to provide branding
+        through the /META-INF/webconsole.properties.
+    </description>
+
+    <properties>
+        <appendedResourcesDirectory>${basedir}/../../etc/appended-resources</appendedResourcesDirectory>
+    </properties>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.felix</groupId>
+                <artifactId>maven-bundle-plugin</artifactId>
+                <extensions>true</extensions>
+                <configuration>
+                    <instructions>
+                        <Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
+                        <Bundle-DocURL>http://felix.apache.org/site/apache-felix-karaf.html</Bundle-DocURL>
+                        <Fragment-Host>org.apache.felix.webconsole</Fragment-Host>
+                        <Export-Package>!*</Export-Package>
+                    </instructions>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+
+  
+</project>
\ No newline at end of file
