diff --git a/ipojo/manipulator/manipulator/src/main/java/org/apache/felix/ipojo/manipulator/metadata/annotation/ClassMetadataCollector.java b/ipojo/manipulator/manipulator/src/main/java/org/apache/felix/ipojo/manipulator/metadata/annotation/ClassMetadataCollector.java
index 2cf3c3e..7346049 100644
--- a/ipojo/manipulator/manipulator/src/main/java/org/apache/felix/ipojo/manipulator/metadata/annotation/ClassMetadataCollector.java
+++ b/ipojo/manipulator/manipulator/src/main/java/org/apache/felix/ipojo/manipulator/metadata/annotation/ClassMetadataCollector.java
@@ -98,6 +98,12 @@
      * @see org.objectweb.asm.ClassVisitor#visitAnnotation(java.lang.String, boolean)
      */
     public AnnotationVisitor visitAnnotation(String desc, boolean visible) {
+        //TODO we should find a better way to do this.
+        // Cannot retrieve the class object as @Configuration is in iPOJO runtime.
+        if (Type.getType(desc).getClassName().equals("org.apache.felix.ipojo.configuration.Configuration")) {
+            workbench.ignore(true);
+            return null;
+        }
 
         // Return the visitor to be executed (may be null)
         return registry.selection(workbench)
@@ -152,6 +158,11 @@
             if (workbench.getRoot() == null) {
                 // No 'top-level' element has been contributed
 
+                if (workbench.ignore()) {
+                    // Ignore this class.
+                    return;
+                }
+
                 if (!workbench.getElements().isEmpty()) {
                     // There are other annotation's contribution on this type (additional handler declaration/configuration)
                     // That means that there is a missing 'component type' annotation
diff --git a/ipojo/manipulator/manipulator/src/main/java/org/apache/felix/ipojo/manipulator/metadata/annotation/ComponentWorkbench.java b/ipojo/manipulator/manipulator/src/main/java/org/apache/felix/ipojo/manipulator/metadata/annotation/ComponentWorkbench.java
index 2fdd6c5..421bbba 100644
--- a/ipojo/manipulator/manipulator/src/main/java/org/apache/felix/ipojo/manipulator/metadata/annotation/ComponentWorkbench.java
+++ b/ipojo/manipulator/manipulator/src/main/java/org/apache/felix/ipojo/manipulator/metadata/annotation/ComponentWorkbench.java
@@ -63,6 +63,11 @@
 
     private ClassNode classNode;
 
+    /**
+     * A flag indicating if the class needs to be ignored.
+     */
+    private boolean toIgnore;
+
     public ComponentWorkbench(BindingRegistry bindingRegistry, ClassNode node) {
         this.bindingRegistry = bindingRegistry;
         this.classNode = node;
@@ -83,6 +88,7 @@
 
     /**
      * The identified root Element. May be null if at the visit time, the root as not been identified.
+     *
      * @return the root Element. or {@literal null} if not defined at the execution time.
      */
     public Element getRoot() {
@@ -149,4 +155,22 @@
         return root;
 
     }
+
+    /**
+     * Checks whether this class must be ignored.
+     *
+     * @return {@code true} if the class is ignored.
+     */
+    public boolean ignore() {
+        return toIgnore;
+    }
+
+    /**
+     * Sets the 'ignore' aspect of the current class.
+     *
+     * @param ignore whether or not the class must be ignored.
+     */
+    public void ignore(boolean ignore) {
+        this.toIgnore = ignore;
+    }
 }
diff --git a/ipojo/manipulator/manipulator/src/main/java/org/apache/felix/ipojo/manipulator/metadata/annotation/visitor/ComponentVisitor.java b/ipojo/manipulator/manipulator/src/main/java/org/apache/felix/ipojo/manipulator/metadata/annotation/visitor/ComponentVisitor.java
index 291e214..20a35bd 100644
--- a/ipojo/manipulator/manipulator/src/main/java/org/apache/felix/ipojo/manipulator/metadata/annotation/visitor/ComponentVisitor.java
+++ b/ipojo/manipulator/manipulator/src/main/java/org/apache/felix/ipojo/manipulator/metadata/annotation/visitor/ComponentVisitor.java
@@ -60,7 +60,7 @@
         if (name.equals("public_factory")  || name.equals("publicFactory")) {
             // public_factory is deprecated, but must sill be supported
             String factory = value.toString();
-            if (factory != null && factory.equalsIgnoreCase("false")) {
+            if (factory.equalsIgnoreCase("false")) {
                 component.addAttribute(new Attribute("public", "false"));
             } else {
                 component.addAttribute(new Attribute("public", "true"));
