diff --git a/ipojo/handler/eventadmin/pom.xml b/ipojo/handler/eventadmin/pom.xml
index 7128f9d..4d67d3e 100644
--- a/ipojo/handler/eventadmin/pom.xml
+++ b/ipojo/handler/eventadmin/pom.xml
@@ -16,7 +16,8 @@
 	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">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
 	<parent>
 		<groupId>org.apache.felix</groupId>
 		<artifactId>felix</artifactId>
@@ -28,7 +29,6 @@
 	<name>Apache Felix iPOJO Event Admin Handler</name>
 	<artifactId>org.apache.felix.ipojo.handler.eventadmin</artifactId>
 	<version>1.1.0-SNAPSHOT</version>
-	
 	<dependencies>
 		<dependency>
 			<groupId>org.apache.felix</groupId>
@@ -43,7 +43,7 @@
 		<dependency>
 			<groupId>org.apache.felix</groupId>
 			<artifactId>org.osgi.core</artifactId>
-			<version>1.2.0</version>
+			<version>1.0.1</version>
 		</dependency>
 		<dependency>
 			<groupId>org.apache.felix</groupId>
@@ -51,7 +51,6 @@
 			<version>1.2.0</version>
 		</dependency>
 	</dependencies>
-	
 	<build>
 		<plugins>
 			<plugin>
@@ -64,21 +63,16 @@
 						<Export-Package>org.apache.felix.ipojo.handlers.event.*;
 							version="0.9.0"</Export-Package>
 						<Bundle-Name>${pom.name}</Bundle-Name>
-						<Bundle-SymbolicName>
-							org.apache.felix.ipojo.handler.eventadmin
+						<Bundle-SymbolicName> org.apache.felix.ipojo.handler.eventadmin 
 						</Bundle-SymbolicName>
-						<Bundle-Description>
-							iPOJO Event Admin Handlers
+						<Bundle-Description> iPOJO Event Admin Handlers 
 						</Bundle-Description>
 						<Bundle-DocURL>
-							http://felix.apache.org/site/event-admin-handlers.html
+							http://felix.apache.org/site/event-admin-handlers.html 
 						</Bundle-DocURL>
-						<Bundle-Vendor>The Apache Software
-							Foundation</Bundle-Vendor>
-						<Include-Resource>
-							META-INF/LICENCE=LICENSE,
-							META-INF/NOTICE=NOTICE
-						</Include-Resource>
+						<Bundle-Vendor>The Apache Software Foundation</Bundle-Vendor>
+						<Include-Resource> META-INF/LICENCE=LICENSE,
+							META-INF/NOTICE=NOTICE </Include-Resource>
 					</instructions>
 				</configuration>
 			</plugin>
@@ -97,7 +91,31 @@
 					</execution>
 				</executions>
 			</plugin>
+			<plugin>
+				<groupId>org.codehaus.mojo</groupId>
+				<artifactId>rat-maven-plugin</artifactId>
+				<configuration>
+					<excludeSubProjects>false</excludeSubProjects>
+					<useEclipseDefaultExcludes>true</useEclipseDefaultExcludes>
+					<useMavenDefaultExcludes>true</useMavenDefaultExcludes>
+					<excludes>
+						<param>doc/**/*</param>
+						<param>maven-eclipse.xml</param>
+						<param>.checkstyle</param>
+						<param>.externalToolBuilders/*</param>
+						<param>LICENSE.asm</param>
+					</excludes>
+				</configuration>
+			</plugin>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-checkstyle-plugin</artifactId>
+				<configuration>
+					<enableRulesSummary>false</enableRulesSummary>
+					<violationSeverity>warning</violationSeverity>
+					<configLocation>http://felix.apache.org/ipojo/dev/checkstyle_ipojo.xml</configLocation>
+				</configuration>
+			</plugin>
 		</plugins>
 	</build>
-
 </project>
\ No newline at end of file
diff --git a/ipojo/handler/eventadmin/src/main/java/org/apache/felix/ipojo/handlers/event/publisher/EventAdminPublisherMetadata.java b/ipojo/handler/eventadmin/src/main/java/org/apache/felix/ipojo/handlers/event/publisher/EventAdminPublisherMetadata.java
index 89f0a25..72ec765 100644
--- a/ipojo/handler/eventadmin/src/main/java/org/apache/felix/ipojo/handlers/event/publisher/EventAdminPublisherMetadata.java
+++ b/ipojo/handler/eventadmin/src/main/java/org/apache/felix/ipojo/handlers/event/publisher/EventAdminPublisherMetadata.java
@@ -102,7 +102,7 @@
      *             the instance is invalid.
      */
     public EventAdminPublisherMetadata(Element publisher)
-            throws ConfigurationException {
+        throws ConfigurationException {
 
         /**
          * Setup required attributes
diff --git a/ipojo/handler/extender/pom.xml b/ipojo/handler/extender/pom.xml
index 751f404..46fbe9d 100644
--- a/ipojo/handler/extender/pom.xml
+++ b/ipojo/handler/extender/pom.xml
@@ -16,7 +16,8 @@
 	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">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
 	<parent>
 		<groupId>org.apache.felix</groupId>
 		<artifactId>felix</artifactId>
@@ -26,12 +27,9 @@
 	<modelVersion>4.0.0</modelVersion>
 	<packaging>bundle</packaging>
 	<name>Apache Felix iPOJO Extender Pattern Handler</name>
-	<artifactId>
-		org.apache.felix.ipojo.handler.extender
-	</artifactId>
+	<artifactId> org.apache.felix.ipojo.handler.extender </artifactId>
 	<groupId>org.apache.felix</groupId>
 	<version>1.1.0-SNAPSHOT</version>
-
 	<dependencies>
 		<dependency>
 			<groupId>org.apache.felix</groupId>
@@ -46,7 +44,7 @@
 		<dependency>
 			<groupId>org.apache.felix</groupId>
 			<artifactId>org.osgi.core</artifactId>
-			<version>1.2.0</version>
+			<version>1.0.1</version>
 		</dependency>
 		<dependency>
 			<groupId>org.apache.felix</groupId>
@@ -54,7 +52,6 @@
 			<version>1.2.0</version>
 		</dependency>
 	</dependencies>
-
 	<build>
 		<plugins>
 			<plugin>
@@ -63,26 +60,20 @@
 				<extensions>true</extensions>
 				<configuration>
 					<instructions>
-						<Bundle-Vendor>
-							The Apache Software Foundation
-						</Bundle-Vendor>
-						<Bundle-Description>
-							iPOJO Extender Pattern Handler
+						<Bundle-Vendor> The Apache Software Foundation </Bundle-Vendor>
+						<Bundle-Description> iPOJO Extender Pattern Handler 
 						</Bundle-Description>
 						<Bundle-DocURL>
-							http://felix.apache.org/site/extender-pattern-handler.html
+							http://felix.apache.org/site/extender-pattern-handler.html 
 						</Bundle-DocURL>
-						<Private-Package>
-							org.apache.felix.ipojo.handler.extender
+						<Private-Package> org.apache.felix.ipojo.handler.extender 
 						</Private-Package>
 						<Bundle-Name>${pom.name}</Bundle-Name>
 						<Bundle-SymbolicName>
-							org.apache.felix.ipojo.handler.extender.pattern
+							org.apache.felix.ipojo.handler.extender.pattern 
 						</Bundle-SymbolicName>
-						<Include-Resource>
-							META-INF/LICENCE=LICENSE,
-							META-INF/NOTICE=NOTICE
-						</Include-Resource>
+						<Include-Resource> META-INF/LICENCE=LICENSE,
+							META-INF/NOTICE=NOTICE </Include-Resource>
 					</instructions>
 				</configuration>
 			</plugin>
@@ -101,7 +92,31 @@
 					</execution>
 				</executions>
 			</plugin>
+			<plugin>
+				<groupId>org.codehaus.mojo</groupId>
+				<artifactId>rat-maven-plugin</artifactId>
+				<configuration>
+					<excludeSubProjects>false</excludeSubProjects>
+					<useEclipseDefaultExcludes>true</useEclipseDefaultExcludes>
+					<useMavenDefaultExcludes>true</useMavenDefaultExcludes>
+					<excludes>
+						<param>doc/**/*</param>
+						<param>maven-eclipse.xml</param>
+						<param>.checkstyle</param>
+						<param>.externalToolBuilders/*</param>
+						<param>LICENSE.asm</param>
+					</excludes>
+				</configuration>
+			</plugin>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-checkstyle-plugin</artifactId>
+				<configuration>
+					<enableRulesSummary>false</enableRulesSummary>
+					<violationSeverity>warning</violationSeverity>
+					<configLocation>http://felix.apache.org/ipojo/dev/checkstyle_ipojo.xml</configLocation>
+				</configuration>
+			</plugin>
 		</plugins>
 	</build>
-
 </project>
\ No newline at end of file
diff --git a/ipojo/handler/jmx/pom.xml b/ipojo/handler/jmx/pom.xml
index f4e2df7..da1f1f0 100644
--- a/ipojo/handler/jmx/pom.xml
+++ b/ipojo/handler/jmx/pom.xml
@@ -16,7 +16,8 @@
 	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">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
 	<parent>
 		<groupId>org.apache.felix</groupId>
 		<artifactId>felix</artifactId>
@@ -28,7 +29,6 @@
 	<name>Apache Felix iPOJO JMX Handler</name>
 	<artifactId>org.apache.felix.ipojo.handler.jmx</artifactId>
 	<version>1.1.0-SNAPSHOT</version>
-
 	<dependencies>
 		<dependency>
 			<groupId>org.apache.felix</groupId>
@@ -43,7 +43,7 @@
 		<dependency>
 			<groupId>org.apache.felix</groupId>
 			<artifactId>org.osgi.core</artifactId>
-			<version>1.2.0</version>
+			<version>1.0.1</version>
 		</dependency>
 		<dependency>
 			<groupId>org.apache.felix</groupId>
@@ -51,7 +51,6 @@
 			<version>1.2.0</version>
 		</dependency>
 	</dependencies>
-
 	<build>
 		<plugins>
 			<plugin>
@@ -61,25 +60,18 @@
 				<version>1.4.3</version>
 				<configuration>
 					<instructions>
-						<Private-Package>
-							org.apache.felix.ipojo.handlers.jmx
+						<Private-Package> org.apache.felix.ipojo.handlers.jmx 
 						</Private-Package>
 						<Bundle-Name>${pom.name}</Bundle-Name>
-						<Bundle-SymbolicName>
-							org.apache.felix.ipojo.handler.jmx 
+						<Bundle-SymbolicName> org.apache.felix.ipojo.handler.jmx 
 						</Bundle-SymbolicName>
-						<Bundle-Vendor>The Apache Software 
-							Foundation</Bundle-Vendor>
-						<Bundle-Description>
-							iPOJO JMX Handler
-						</Bundle-Description>
+						<Bundle-Vendor>The Apache Software Foundation</Bundle-Vendor>
+						<Bundle-Description> iPOJO JMX Handler </Bundle-Description>
 						<Bundle-DocURL>
-							http://felix.apache.org/site/ipojo-jmx-handler.html
+							http://felix.apache.org/site/ipojo-jmx-handler.html 
 						</Bundle-DocURL>
-						<Include-Resource>
-							META-INF/LICENCE=LICENSE,
-							META-INF/NOTICE=NOTICE
-						</Include-Resource>
+						<Include-Resource> META-INF/LICENCE=LICENSE,
+							META-INF/NOTICE=NOTICE </Include-Resource>
 					</instructions>
 				</configuration>
 			</plugin>
@@ -106,7 +98,31 @@
 					</execution>
 				</executions>
 			</plugin>
+			<plugin>
+				<groupId>org.codehaus.mojo</groupId>
+				<artifactId>rat-maven-plugin</artifactId>
+				<configuration>
+					<excludeSubProjects>false</excludeSubProjects>
+					<useEclipseDefaultExcludes>true</useEclipseDefaultExcludes>
+					<useMavenDefaultExcludes>true</useMavenDefaultExcludes>
+					<excludes>
+						<param>doc/**/*</param>
+						<param>maven-eclipse.xml</param>
+						<param>.checkstyle</param>
+						<param>.externalToolBuilders/*</param>
+						<param>LICENSE.asm</param>
+					</excludes>
+				</configuration>
+			</plugin>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-checkstyle-plugin</artifactId>
+				<configuration>
+					<enableRulesSummary>false</enableRulesSummary>
+					<violationSeverity>warning</violationSeverity>
+					<configLocation>http://felix.apache.org/ipojo/dev/checkstyle_ipojo.xml</configLocation>
+				</configuration>
+			</plugin>
 		</plugins>
 	</build>
-
-</project>
+</project>
\ No newline at end of file
diff --git a/ipojo/handler/jmx/src/main/java/org/apache/felix/ipojo/handlers/jmx/MBeanHandler.java b/ipojo/handler/jmx/src/main/java/org/apache/felix/ipojo/handlers/jmx/MBeanHandler.java
index 2b22e62..d78fc47 100644
--- a/ipojo/handler/jmx/src/main/java/org/apache/felix/ipojo/handlers/jmx/MBeanHandler.java
+++ b/ipojo/handler/jmx/src/main/java/org/apache/felix/ipojo/handlers/jmx/MBeanHandler.java
@@ -249,7 +249,15 @@
         }
 
         // set property
-        Element[] attributes = mbeans[0].getElements(JMX_PROPERTY_ELT);
+        Element[] attributes = mbeans[0].getElements(JMX_PROPERTY_ELT, m_namespace);
+        
+        if (attributes == null) {
+            attributes = mbeans[0].getElements(JMX_METHOD_ELT);
+            if (attributes != null) {
+                warn("The JMX property element should use the '" + m_namespace + "' namespace.");
+            }
+        }
+        
         // String[] fields = new String[attributes.length];
         if (attributes != null) {
             for (int i = 0; attributes != null && i < attributes.length; i++) {
@@ -296,9 +304,20 @@
         }
 
         // set methods
-        Element[] methods = mbeans[0].getElements(JMX_METHOD_ELT);
+        Element[] methods = mbeans[0].getElements(JMX_METHOD_ELT, m_namespace);
+        
+        if (methods == null) {
+            methods = mbeans[0].getElements(JMX_METHOD_ELT);
+            if (methods != null) {
+                warn("The JMX method element should use the '" + m_namespace + "' namespace.");
+            }
+        }
+        
         for (int i = 0; methods != null && i < methods.length; i++) {
             String name = methods[i].getAttribute(JMX_NAME_ELT);
+            if (name == null) {
+                name = methods[i].getAttribute("method");
+            }
             String description = null;
             if (methods[i].containsAttribute(JMX_DESCRIPTION_ELT)) {
                 description = methods[i].getAttribute(JMX_DESCRIPTION_ELT);
@@ -394,7 +413,7 @@
         String name = "type=" + m_instanceManager.getClassName() + ",instance="
                 + m_instanceManager.getInstanceName();
         if (m_objNameWODomainElt != null) {
-            name = m_objNameWODomainElt;
+            name = "name=" + m_objNameWODomainElt;
         }
 
         StringBuffer sb = new StringBuffer();
@@ -403,6 +422,8 @@
         }
         sb.append(name);
 
+        info("Computed Objectname: " + sb.toString());
+        
         return sb.toString();
     }
 
@@ -522,19 +543,19 @@
     private MethodField[] getMethodsFromName(String methodName,
             PojoMetadata manipulation, String description) {
 
-        MethodMetadata[] fields = manipulation.getMethods(methodName);
-        if (fields.length == 0) {
+        MethodMetadata[] methods = manipulation.getMethods(methodName);
+        if (methods.length == 0) {
             return null;
         }
 
-        MethodField[] ret = new MethodField[fields.length];
+        MethodField[] ret = new MethodField[methods.length];
 
-        if (fields.length == 1) {
-            ret[0] = new MethodField(fields[0], description);
+        if (methods.length == 1) {
+            ret[0] = new MethodField(methods[0], description);
             return ret;
         } else {
-            for (int i = 0; i < fields.length; i++) {
-                ret[i] = new MethodField(fields[i], description);
+            for (int i = 0; i < methods.length; i++) {
+                ret[i] = new MethodField(methods[i], description);
             }
             return ret;
         }
diff --git a/ipojo/handler/temporal/pom.xml b/ipojo/handler/temporal/pom.xml
index 52c24db..3bc6726 100644
--- a/ipojo/handler/temporal/pom.xml
+++ b/ipojo/handler/temporal/pom.xml
@@ -16,7 +16,8 @@
 	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">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
 	<parent>
 		<groupId>org.apache.felix</groupId>
 		<artifactId>felix</artifactId>
@@ -29,12 +30,11 @@
 	<groupId>org.apache.felix</groupId>
 	<version>1.1.0-SNAPSHOT</version>
 	<name>Apache Felix iPOJO Temporal Service Dependency Handler</name>
-
 	<dependencies>
 		<dependency>
 			<groupId>org.apache.felix</groupId>
 			<artifactId>org.osgi.core</artifactId>
-			<version>1.2.0</version>
+			<version>1.0.1</version>
 		</dependency>
 		<dependency>
 			<groupId>org.apache.felix</groupId>
@@ -52,7 +52,6 @@
 			<version>1.1.0-SNAPSHOT</version>
 		</dependency>
 	</dependencies>
-
 	<build>
 		<plugins>
 			<plugin>
@@ -62,26 +61,19 @@
 				<extensions>true</extensions>
 				<configuration>
 					<instructions>
-						<Private-Package>
-							org.apache.felix.ipojo.handler.temporal
+						<Private-Package> org.apache.felix.ipojo.handler.temporal 
 						</Private-Package>
 						<Bundle-Name>${pom.name}</Bundle-Name>
-						<Bundle-SymbolicName>
-							org.apache.felix.ipojo.handler.temporal
+						<Bundle-SymbolicName> org.apache.felix.ipojo.handler.temporal 
 						</Bundle-SymbolicName>
-						<Bundle-Vendor>
-							The Apache Software Foundation
-						</Bundle-Vendor>
-						<Bundle-Description>
-							iPOJO Temporal Dependency Handler
+						<Bundle-Vendor> The Apache Software Foundation </Bundle-Vendor>
+						<Bundle-Description> iPOJO Temporal Dependency Handler 
 						</Bundle-Description>
 						<Bundle-DocURL>
-							http://felix.apache.org/site/temporal-service-dependency.html
+							http://felix.apache.org/site/temporal-service-dependency.html 
 						</Bundle-DocURL>
-						<Include-Resource>
-							META-INF/LICENCE=LICENSE,
-							META-INF/NOTICE=NOTICE
-						</Include-Resource>
+						<Include-Resource> META-INF/LICENCE=LICENSE,
+							META-INF/NOTICE=NOTICE </Include-Resource>
 					</instructions>
 				</configuration>
 			</plugin>
@@ -100,7 +92,31 @@
 					</execution>
 				</executions>
 			</plugin>
+			<plugin>
+				<groupId>org.codehaus.mojo</groupId>
+				<artifactId>rat-maven-plugin</artifactId>
+				<configuration>
+					<excludeSubProjects>false</excludeSubProjects>
+					<useEclipseDefaultExcludes>true</useEclipseDefaultExcludes>
+					<useMavenDefaultExcludes>true</useMavenDefaultExcludes>
+					<excludes>
+						<param>doc/**/*</param>
+						<param>maven-eclipse.xml</param>
+						<param>.checkstyle</param>
+						<param>.externalToolBuilders/*</param>
+						<param>LICENSE.asm</param>
+					</excludes>
+				</configuration>
+			</plugin>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-checkstyle-plugin</artifactId>
+				<configuration>
+					<enableRulesSummary>false</enableRulesSummary>
+					<violationSeverity>warning</violationSeverity>
+					<configLocation>http://felix.apache.org/ipojo/dev/checkstyle_ipojo.xml</configLocation>
+				</configuration>
+			</plugin>
 		</plugins>
 	</build>
-
 </project>
\ No newline at end of file
diff --git a/ipojo/handler/whiteboard/pom.xml b/ipojo/handler/whiteboard/pom.xml
index 011cb0f..4c2f892 100644
--- a/ipojo/handler/whiteboard/pom.xml
+++ b/ipojo/handler/whiteboard/pom.xml
@@ -16,7 +16,8 @@
 	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">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
 	<parent>
 		<groupId>org.apache.felix</groupId>
 		<artifactId>felix</artifactId>
@@ -26,12 +27,9 @@
 	<modelVersion>4.0.0</modelVersion>
 	<packaging>bundle</packaging>
 	<name>Apache Felix iPOJO White Board Pattern Handler</name>
-	<artifactId>
-		org.apache.felix.ipojo.handler.whiteboard
-	</artifactId>
+	<artifactId> org.apache.felix.ipojo.handler.whiteboard </artifactId>
 	<groupId>org.apache.felix</groupId>
 	<version>1.1.0-SNAPSHOT</version>
-
 	<dependencies>
 		<dependency>
 			<groupId>org.apache.felix</groupId>
@@ -46,7 +44,7 @@
 		<dependency>
 			<groupId>org.apache.felix</groupId>
 			<artifactId>org.osgi.core</artifactId>
-			<version>1.2.0</version>
+			<version>1.0.1</version>
 		</dependency>
 		<dependency>
 			<groupId>org.apache.felix</groupId>
@@ -54,7 +52,6 @@
 			<version>1.2.0</version>
 		</dependency>
 	</dependencies>
-
 	<build>
 		<plugins>
 			<plugin>
@@ -64,29 +61,21 @@
 				<configuration>
 					<instructions>
 						<Bundle-Name>${pom.name}</Bundle-Name>
-						<Bundle-SymbolicName>
-							org.apache.felix.ipojo.handler.whiteboard
+						<Bundle-SymbolicName> org.apache.felix.ipojo.handler.whiteboard 
 						</Bundle-SymbolicName>
-						<Bundle-Vendor>
-							The Apache Software Foundation
-						</Bundle-Vendor>
-						<Bundle-Description>
-							iPOJO White-Board Pattern Handler
+						<Bundle-Vendor> The Apache Software Foundation </Bundle-Vendor>
+						<Bundle-Description> iPOJO White-Board Pattern Handler 
 						</Bundle-Description>
 						<Bundle-DocURL>
-							http://felix.apache.org/site/white-board-pattern-handler.html
+							http://felix.apache.org/site/white-board-pattern-handler.html 
 						</Bundle-DocURL>
-						<Private-Package>
-							org.apache.felix.ipojo.handler.wbp
+						<Private-Package> org.apache.felix.ipojo.handler.wbp 
 						</Private-Package>
 						<Bundle-Name>${pom.name}</Bundle-Name>
-						<Bundle-SymbolicName>
-							ipojo.event.admin.handler.wbp
+						<Bundle-SymbolicName> ipojo.event.admin.handler.wbp 
 						</Bundle-SymbolicName>
-						<Include-Resource>
-							META-INF/LICENCE=LICENSE,
-							META-INF/NOTICE=NOTICE
-						</Include-Resource>
+						<Include-Resource> META-INF/LICENCE=LICENSE,
+							META-INF/NOTICE=NOTICE </Include-Resource>
 					</instructions>
 				</configuration>
 			</plugin>
@@ -105,7 +94,31 @@
 					</execution>
 				</executions>
 			</plugin>
+			<plugin>
+				<groupId>org.codehaus.mojo</groupId>
+				<artifactId>rat-maven-plugin</artifactId>
+				<configuration>
+					<excludeSubProjects>false</excludeSubProjects>
+					<useEclipseDefaultExcludes>true</useEclipseDefaultExcludes>
+					<useMavenDefaultExcludes>true</useMavenDefaultExcludes>
+					<excludes>
+						<param>doc/**/*</param>
+						<param>maven-eclipse.xml</param>
+						<param>.checkstyle</param>
+						<param>.externalToolBuilders/*</param>
+						<param>LICENSE.asm</param>
+					</excludes>
+				</configuration>
+			</plugin>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-checkstyle-plugin</artifactId>
+				<configuration>
+					<enableRulesSummary>false</enableRulesSummary>
+					<violationSeverity>warning</violationSeverity>
+					<configLocation>http://felix.apache.org/ipojo/dev/checkstyle_ipojo.xml</configLocation>
+				</configuration>
+			</plugin>
 		</plugins>
 	</build>
-
 </project>
\ No newline at end of file
