diff --git a/ipojo/manipulator/NOTICE b/ipojo/manipulator/NOTICE
index f323c11..3a8a44b 100644
--- a/ipojo/manipulator/NOTICE
+++ b/ipojo/manipulator/NOTICE
@@ -1,5 +1,5 @@
 Apache Felix iPOJO Manipulator
-Copyright 2008 The Apache Software Foundation
+Copyright 2008-2009 The Apache Software Foundation
 
 I. Included Software
 
diff --git a/ipojo/manipulator/pom.xml b/ipojo/manipulator/pom.xml
index a77ec58..70af710 100644
--- a/ipojo/manipulator/pom.xml
+++ b/ipojo/manipulator/pom.xml
@@ -70,6 +70,7 @@
 							META-INF/LICENCE.asm=LICENSE.asm, META-INF/NOTICE=NOTICE,
 							xsd=src/main/resources </Include-Resource>
 					</instructions>
+					<obrRepository>NONE</obrRepository>
 				</configuration>
 			</plugin>
 			<plugin>
diff --git a/ipojo/manipulator/src/main/java/org/apache/felix/ipojo/manipulation/annotations/FieldCollector.java b/ipojo/manipulator/src/main/java/org/apache/felix/ipojo/manipulation/annotations/FieldCollector.java
index a181605..6dc24c7 100644
--- a/ipojo/manipulator/src/main/java/org/apache/felix/ipojo/manipulation/annotations/FieldCollector.java
+++ b/ipojo/manipulator/src/main/java/org/apache/felix/ipojo/manipulation/annotations/FieldCollector.java
@@ -230,7 +230,7 @@
 
             req.addAttribute(new Attribute("field", m_field));
             if (m_specification != null) {
-                req.addAttribute(new Attribute("interface", m_specification));
+                req.addAttribute(new Attribute("specification", m_specification));
             }
             if (m_filter != null) {
                 req.addAttribute(new Attribute("filter", m_filter));
diff --git a/ipojo/manipulator/src/main/java/org/apache/felix/ipojo/manipulator/Pojoization.java b/ipojo/manipulator/src/main/java/org/apache/felix/ipojo/manipulator/Pojoization.java
index 70650a1..26dfde7 100644
--- a/ipojo/manipulator/src/main/java/org/apache/felix/ipojo/manipulator/Pojoization.java
+++ b/ipojo/manipulator/src/main/java/org/apache/felix/ipojo/manipulator/Pojoization.java
@@ -58,6 +58,11 @@
  * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
  */
 public class Pojoization {
+    
+    /**
+     * iPOJO Imported Package Version.
+     */
+    public static final String IPOJO_PACKAGE_VERSION = " 1.1.0";
 
     /**
      * List of component types.
@@ -586,7 +591,7 @@
     private void setImports(Attributes att) {
         Map imports = parseHeader(att.getValue("Import-Package"));
         Map ver = new TreeMap();
-        ver.put("version", "0.9.0");
+        ver.put("version", IPOJO_PACKAGE_VERSION);
         if (!imports.containsKey("org.apache.felix.ipojo")) {
             imports.put("org.apache.felix.ipojo", ver);
         }
@@ -773,21 +778,19 @@
     }
     
     /**
-     * Get packages referenced by composite.
+     * Get packages referenced by component.
      * @return the list of referenced packages.
      */
     private List getReferredPackages() {
         List referred = new ArrayList();
         for (int i = 0; i < m_metadata.length; i++) {
-            if (m_metadata[i].getName().equalsIgnoreCase("composite")) {
-                Element[] elems = m_metadata[i].getElements();
-                for (int j = 0; j < elems.length; j++) {
-                    String att = elems[j].getAttribute("specification");
-                    if (att != null) {
-                        int last = att.lastIndexOf('.');
-                        if (last != -1) {
-                            referred.add(att.substring(0, last));
-                        }
+            Element[] elems = m_metadata[i].getElements();
+            for (int j = 0; j < elems.length; j++) {
+                String att = elems[j].getAttribute("specification");
+                if (att != null) {
+                    int last = att.lastIndexOf('.');
+                    if (last != -1) {
+                        referred.add(att.substring(0, last));
                     }
                 }
             }
