diff --git a/webconsole-plugins/memoryusage/pom.xml b/webconsole-plugins/memoryusage/pom.xml
index b544388..e64b718 100644
--- a/webconsole-plugins/memoryusage/pom.xml
+++ b/webconsole-plugins/memoryusage/pom.xml
@@ -1,135 +1,162 @@
 <?xml version="1.0" encoding="ISO-8859-1"?>
-<!--
-    Licensed to the Apache Software Foundation (ASF) under one
-    or more contributor license agreements.  See the NOTICE file
-    distributed with this work for additional information
-    regarding copyright ownership.  The ASF licenses this file
-    to you under the Apache License, Version 2.0 (the
-    "License"); you may not use this file except in compliance
-    with the License.  You may obtain a copy of the License at
-    
-    http://www.apache.org/licenses/LICENSE-2.0
-    
-    Unless required by applicable law or agreed to in writing,
-    software distributed under the License is distributed on an
-    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-    KIND, either express or implied.  See the License for the
-    specific language governing permissions and limitations
-    under the License.
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor 
+	license agreements. See the NOTICE file distributed with this work for additional 
+	information regarding copyright ownership. The ASF licenses this file to 
+	you under the Apache License, Version 2.0 (the "License"); you may not use 
+	this file except in compliance with the License. You may obtain a copy of 
+	the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required 
+	by applicable law or agreed to in writing, software distributed under the 
+	License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS 
+	OF ANY KIND, either express or implied. See the License for the specific 
+	language governing permissions and limitations under the License. -->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
 
-    <modelVersion>4.0.0</modelVersion>
-    <parent>
-        <groupId>org.apache.felix</groupId>
-        <artifactId>felix-parent</artifactId>
-        <version>1.2.0</version>
-        <relativePath>../../../pom/pom.xml</relativePath>
-    </parent>
+	<modelVersion>4.0.0</modelVersion>
+	<parent>
+		<groupId>org.apache.felix</groupId>
+		<artifactId>felix-parent</artifactId>
+		<version>1.2.0</version>
+		<relativePath>../../../pom/pom.xml</relativePath>
+	</parent>
 
-    <artifactId>org.apache.felix.webconsole.plugins.memoryusage</artifactId>
-    <packaging>bundle</packaging>
-    <version>1.0.3-SNAPSHOT</version>
+	<artifactId>org.apache.felix.webconsole.plugins.memoryusage</artifactId>
+	<packaging>bundle</packaging>
+	<version>1.0.3-SNAPSHOT</version>
 
-    <name>Apache Felix Web Console Memory Usage Plugin</name>
-    <description>
+	<name>Apache Felix Web Console Memory Usage Plugin</name>
+	<description>
         Plugin providing plugins to the Felix Shell and Web Console to
         observe the VMs memory use and cause try to get thread dumps etc.
     </description>
 
-    <scm>
-        <connection>
+	<scm>
+		<connection>
             scm:svn:http://svn.apache.org/repos/asf/felix/trunk/webconsole-plugins/memoryusage
         </connection>
-        <developerConnection>
+		<developerConnection>
             scm:svn:https://svn.apache.org/repos/asf/felix/trunk/webconsole-plugins/memoryusage
         </developerConnection>
-        <url>
+		<url>
             http://svn.apache.org/viewvc/felix/trunk/webconsole-plugins/memoryusage
         </url>
-    </scm>
+	</scm>
 
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-compiler-plugin</artifactId>
-                <configuration>
-                    <source>1.5</source>
-                    <target>1.5</target>
-                </configuration>
-            </plugin>
-            <plugin>
-                <groupId>org.apache.felix</groupId>
-                <artifactId>maven-bundle-plugin</artifactId>
-                <version>2.0.1</version>
-                <extensions>true</extensions>
-                <configuration>
-                    <instructions>
-                        <Bundle-SymbolicName>
-                            ${project.artifactId}
+	<build>
+
+		<!-- add UTF-8-to-ISO translated resources -->
+		<resources>
+			<resource>
+				<directory>${basedir}/src/main/resources</directory>
+			</resource>
+			<resource>
+				<directory>target/classes</directory>
+				<includes>
+					<include>OSGI-INF/**</include>
+				</includes>
+				<filtering>false</filtering>
+			</resource>
+		</resources>
+
+		<plugins>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-compiler-plugin</artifactId>
+				<configuration>
+					<source>1.5</source>
+					<target>1.5</target>
+				</configuration>
+			</plugin>
+
+			<!-- translate UTF-8 encoded properties files to ISO-8859-1 -->
+			<plugin>
+				<groupId>org.codehaus.mojo</groupId>
+				<artifactId>native2ascii-maven-plugin</artifactId>
+				<version>1.0-beta-1</version>
+				<executions>
+					<execution>
+						<goals>
+							<goal>native2ascii</goal>
+						</goals>
+						<configuration>
+							<encoding>UTF-8</encoding>
+						</configuration>
+					</execution>
+				</executions>
+			</plugin>
+
+
+			<plugin>
+				<groupId>org.apache.felix</groupId>
+				<artifactId>maven-bundle-plugin</artifactId>
+				<version>2.3.4</version>
+				<extensions>true</extensions>
+				<configuration>
+					<instructions>
+						<Bundle-SymbolicName>
+							${project.artifactId}
                         </Bundle-SymbolicName>
-                        <Import-Package>
-                            javax.management.*,
-                            org.osgi.framework
+						<Import-Package>
+							javax.management.*,
+							org.osgi.framework
                         </Import-Package>
-                        <DynamicImport-Package>
-                            <!-- logging -->
-                            org.osgi.service.log;version="[1.3,2)",
-                            
-                            <!-- configuration -->
-                            org.osgi.service.cm;version="[1.2,2)",
-                            org.osgi.service.metatype;version="[1.1,2)",
-                            
-                            <!-- plug into the web console -->
-                            javax.servlet;
-                            javax.servlet.http;version="[2.3,3)",
-                            org.apache.felix.webconsole;version="[3.0,3.2)",
+						<DynamicImport-Package>
+							<!-- logging -->
+							org.osgi.service.log;version="[1.3,2)",
 
-                            <!-- plug into the traditional Felix shell -->
-                            org.apache.felix.shell;version="[1.0,1.1)"
-                        </DynamicImport-Package>
-                        <Private-Package>
-                            org.apache.felix.webconsole.plugins.memoryusage.*
+							<!-- configuration -->
+							org.osgi.service.cm;version="[1.2,2)",
+							org.osgi.service.metatype;version="[1.1,2)",
+
+							<!-- plug into the web console -->
+							javax.servlet;
+							javax.servlet.http;version="[2.3,3)",
+							org.apache.felix.webconsole;version="[3.0,3.2)",
+
+							<!-- plug into the traditional Felix shell -->
+							org.apache.felix.shell;version="[1.0,1.1)"
+						</DynamicImport-Package>
+						<Private-Package>
+							org.apache.felix.webconsole.plugins.memoryusage.*
                         </Private-Package>
-                        <Bundle-Activator>
-                            org.apache.felix.webconsole.plugins.memoryusage.internal.Activator
+						<Bundle-Activator>
+							org.apache.felix.webconsole.plugins.memoryusage.internal.Activator
                         </Bundle-Activator>
-                    </instructions>
-                </configuration>
-            </plugin>
-        </plugins>
-    </build>
-    <dependencies>
-        <dependency>
-            <groupId>org.osgi</groupId>
-            <artifactId>org.osgi.core</artifactId>
-            <version>4.0.0</version>
-            <scope>provided</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.osgi</groupId>
-            <artifactId>org.osgi.compendium</artifactId>
-            <version>4.0.0</version>
-            <scope>provided</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.felix</groupId>
-            <artifactId>org.apache.felix.shell</artifactId>
-            <version>1.0.0</version>
-            <scope>provided</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.felix</groupId>
-            <artifactId>org.apache.felix.webconsole</artifactId>
-            <version>3.0.0</version>
-            <scope>provided</scope>
-        </dependency>
-        <dependency>
-            <groupId>javax.servlet</groupId>
-            <artifactId>servlet-api</artifactId>
-            <version>2.3</version>
-            <scope>provided</scope>
-        </dependency>
-    </dependencies>
+					</instructions>
+				</configuration>
+			</plugin>
+		</plugins>
+	</build>
+	<dependencies>
+		<dependency>
+			<groupId>org.osgi</groupId>
+			<artifactId>org.osgi.core</artifactId>
+			<version>4.0.0</version>
+			<scope>provided</scope>
+		</dependency>
+		<dependency>
+			<groupId>org.osgi</groupId>
+			<artifactId>org.osgi.compendium</artifactId>
+			<version>4.0.0</version>
+			<scope>provided</scope>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.felix</groupId>
+			<artifactId>org.apache.felix.shell</artifactId>
+			<version>1.0.0</version>
+			<scope>provided</scope>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.felix</groupId>
+			<artifactId>org.apache.felix.webconsole</artifactId>
+			<version>3.0.0</version>
+			<scope>provided</scope>
+		</dependency>
+		<dependency>
+			<groupId>javax.servlet</groupId>
+			<artifactId>servlet-api</artifactId>
+			<version>2.3</version>
+			<scope>provided</scope>
+		</dependency>
+	</dependencies>
 </project>
