diff --git a/ipojo/runtime/annotations/doc/changelog.txt b/ipojo/runtime/annotations/doc/changelog.txt
index e2c9f16..c0633cb 100644
--- a/ipojo/runtime/annotations/doc/changelog.txt
+++ b/ipojo/runtime/annotations/doc/changelog.txt
@@ -1,3 +1,8 @@
+Changes from the 1.8.0 to 1.8.2
+-------------------------------
+** Improvement
+    * [FELIX-3380] - minor javadoc corrections in @Temporal annotation
+
 Changes from the 1.6.4 to 1.8.0
 -------------------------------
 ** Bug
diff --git a/ipojo/runtime/composite/doc/changelog.txt b/ipojo/runtime/composite/doc/changelog.txt
index 36548c7..0925163 100644
--- a/ipojo/runtime/composite/doc/changelog.txt
+++ b/ipojo/runtime/composite/doc/changelog.txt
@@ -1,3 +1,10 @@
+Changes from the 1.8.0 to 1.8.2
+-------------------------------
+** Bug
+    * [FELIX-3130] - Nested composites throws StackOverflowError on instantiation
+    * [FELIX-3323] - Ipojo composite throw ClassCastException when configuration is updated thru ConfigAdmin
+    * [FELIX-3451] - "instance.name" attribute not recognized
+
 Changes from the 1.6.0 to 1.8.0
 -------------------------------
 ** Improvement
diff --git a/ipojo/runtime/composite/pom.xml b/ipojo/runtime/composite/pom.xml
index b4b7573..cbe8908 100644
--- a/ipojo/runtime/composite/pom.xml
+++ b/ipojo/runtime/composite/pom.xml
@@ -31,7 +31,7 @@
   <version>1.9.0-SNAPSHOT</version>
 
   <properties>
-    <ipojo.package.version>1.8.0</ipojo.package.version>
+    <ipojo.package.version>1.8.2</ipojo.package.version>
   </properties>
 
   <description>
@@ -48,12 +48,12 @@
     <dependency>
       <groupId>org.apache.felix</groupId>
       <artifactId>org.apache.felix.ipojo.manipulator</artifactId>
-      <version>1.8.0</version>
+      <version>1.8.4</version>
     </dependency>
     <dependency>
       <groupId>org.apache.felix</groupId>
       <artifactId>org.apache.felix.ipojo</artifactId>
-      <version>1.8.0</version>
+      <version>1.9.0-SNAPSHOT</version>
     </dependency>
   </dependencies>
   <build>
@@ -113,7 +113,7 @@
       <plugin>
         <groupId>org.apache.felix</groupId>
         <artifactId>maven-ipojo-plugin</artifactId>
-        <version>1.8.0</version>
+        <version>1.8.4</version>
         <executions>
           <execution>
             <goals>
diff --git a/ipojo/runtime/composite/src/main/java/org/apache/felix/ipojo/composite/CompositeFactory.java b/ipojo/runtime/composite/src/main/java/org/apache/felix/ipojo/composite/CompositeFactory.java
index d739de5..517a003 100644
--- a/ipojo/runtime/composite/src/main/java/org/apache/felix/ipojo/composite/CompositeFactory.java
+++ b/ipojo/runtime/composite/src/main/java/org/apache/felix/ipojo/composite/CompositeFactory.java
@@ -77,8 +77,7 @@
     }
     
     public String getClassName() { return "composite"; }
-        
-    
+
     /**
      * Compute required handlers.
      * @return the list of required handler.
diff --git a/ipojo/runtime/composite/src/main/java/org/apache/felix/ipojo/composite/FactoryProxy.java b/ipojo/runtime/composite/src/main/java/org/apache/felix/ipojo/composite/FactoryProxy.java
index db3a053..8af0c6c 100644
--- a/ipojo/runtime/composite/src/main/java/org/apache/felix/ipojo/composite/FactoryProxy.java
+++ b/ipojo/runtime/composite/src/main/java/org/apache/felix/ipojo/composite/FactoryProxy.java
@@ -174,4 +174,8 @@
         return m_delegate.getVersion();
     }
 
+    public Element getComponentMetadata() {
+        return m_delegate.getComponentMetadata();
+    }
+
 }
diff --git a/ipojo/runtime/core/DEPENDENCIES b/ipojo/runtime/core/DEPENDENCIES
index 6cfe273..2c19f82 100644
--- a/ipojo/runtime/core/DEPENDENCIES
+++ b/ipojo/runtime/core/DEPENDENCIES
@@ -1,5 +1,5 @@
 Apache Felix iPOJO Runtime
-Copyright 2008-2011 The Apache Software Foundation
+Copyright 2008-2012 The Apache Software Foundation
 
 This software was developed at the Apache Software Foundation
 (http://www.apache.org) and may have dependencies on other
diff --git a/ipojo/runtime/core/NOTICE b/ipojo/runtime/core/NOTICE
index 65496d1..d41ae7b 100644
--- a/ipojo/runtime/core/NOTICE
+++ b/ipojo/runtime/core/NOTICE
@@ -1,5 +1,5 @@
 Apache Felix iPOJO Runtime
-Copyright 2008-2011 The Apache Software Foundation
+Copyright 2008-2012 The Apache Software Foundation
 
 This product includes software developed at
 The Apache Software Foundation (http://www.apache.org/).
diff --git a/ipojo/runtime/core/doc/changelog.txt b/ipojo/runtime/core/doc/changelog.txt
index bb0f693..3c6d4d6 100644
--- a/ipojo/runtime/core/doc/changelog.txt
+++ b/ipojo/runtime/core/doc/changelog.txt
@@ -1,44 +1,74 @@
-Changes from the 1.6.8 to 1.8.0
--------------------------------
-** Bug
-    * [FELIX-2694] - Instance state not recomputed after reconfiguration when the instance is stopped
-    * [FELIX-2716] - [iPOJO] Failure when creating proxies for classes in java.* packages
-
-** Improvement
-    * [FELIX-2781] - Expose the implementation class as service when no interfaces are found in the hierarchy
-    * [FELIX-1424] - Constructor Injection
-    * [FELIX-1428] - Constructor injection of Configuration properties
-    * [FELIX-2461] - Allow specifying the targeted service interface in the @ServiceController
-    * [FELIX-2620] - Change iPojo annotation parameters to follow java naming conventions
-    * [FELIX-2621] - Rename annotations to remove collisions
-    * [FELIX-2622] - Support static service properties that are not mirrored into fields
-    * [FELIX-2688] - iPojo "requires.filters" - Array object instead of Dictionary object
-    * [FELIX-2705] - Provide a way to extend the logger strategy
-    * [FELIX-2742] - Constructor injection of service dependencies
-    * [FELIX-2744] - Add annotations to the maven-ipojo-plugin archetype
-
-Changes from the 1.6.6 to 1.6.8
--------------------------------
-** Improvement
- * [FELIX-2688] - iPojo "requires.filters" - Array object instead of Dictionary object
- * [FELIX-2705] - Provide a way to extend the logger strategy
-
-** Bug
- * [FELIX-2685] - Wrong Element name when XML namespace contains ':'
- * [FELIX-2694] - Instance state not recomputed after reconfiguration when the instance is stopped
-
-Changes from the 1.6.4 to 1.6.6
--------------------------------
-** Improvement
- * [FELIX-2594] - Have a way to create new custom iPojo handler without having to specify a handler usage
- * [FELIX-2623] - @Update annotated methods should not require a Dictionary parameter
-
-** Bug
- * [FELIX-2580] - iPOJO failed to create proxies on service which are not interface
- * [FELIX-2596] - DependencyHandler.onObjectCreation throws NPE when bundle is refreshed
- * [FELIX-2603] - wrong behavior of InstanceManager.onSet(..) method
- * [FELIX-2636] - Cannot control the validity of an iPOJO instance using a configuration property
-
+Changes from the 1.8.0 to 1.8.2
+-------------------------------
+** Bug
+    * [FELIX-2893] - Properties are not propagate to service by default
+    * [FELIX-2902] - Service properties added by propagation overrides already existing properties
+    * [FELIX-2907] - Problem calling _setInstanceManager on guice enhanced classe
+    * [FELIX-2981] - Unable to remove configuration properties using iPOJO's configuration handler
+    * [FELIX-2989] - Using a Service Controller set to true can trigger a service registration-unregistration-registration sequence
+    * [FELIX-2995] - The service properties are updated despite there is no changes
+    * [FELIX-3009] - Abstract classes as service specifications generates warnings at runtime
+    * [FELIX-3075] - Change to ServiceController status in current trunk does not re-register service
+    * [FELIX-3172] - Error when calling BundleContext.register(Class, Object, Dictionary)
+    * [FELIX-3192] - Service properties are not updated if the properties were already propagated
+    * [FELIX-3271] - On KF, the Instance singleton strategy throws an UnsupportedOperationException when stopping
+    * [FELIX-3323] - Ipojo composite throw ClassCastException when configuration is updated thru ConfigAdmin
+    * [FELIX-3356] - Objectweb ASM Clashes with IPojo
+    * [FELIX-3374] - Use of java.lang.Properties in iPOJO Core
+
+** Improvement
+    * [FELIX-3036] - Add IPOJO-Components header support
+    * [FELIX-3081] - Integrate the online-manipulator in iPOJO Core
+    * [FELIX-3144] - Method interceptors should receive Method or Constructor objects
+    * [FELIX-3155] - Allow identifying iPojo extensions by a namespace qualified name
+    * [FELIX-3190] - iPOJO Factories doesn't give access to the complete Metadata model
+    * [FELIX-3252] - Merge the online manipulator into iPOJO Core
+    * [FELIX-3326] - Accessing IPojo-Component's all inherited classes and all implemented interfaces in PrimitiveTypeDescription
+
+** New Feature
+    * [FELIX-2932] - Allows disabling the asynchronous processing in the iPOJO Extender
+
+Changes from the 1.6.8 to 1.8.0
+-------------------------------
+** Bug
+    * [FELIX-2694] - Instance state not recomputed after reconfiguration when the instance is stopped
+    * [FELIX-2716] - [iPOJO] Failure when creating proxies for classes in java.* packages
+
+** Improvement
+    * [FELIX-2781] - Expose the implementation class as service when no interfaces are found in the hierarchy
+    * [FELIX-1424] - Constructor Injection
+    * [FELIX-1428] - Constructor injection of Configuration properties
+    * [FELIX-2461] - Allow specifying the targeted service interface in the @ServiceController
+    * [FELIX-2620] - Change iPojo annotation parameters to follow java naming conventions
+    * [FELIX-2621] - Rename annotations to remove collisions
+    * [FELIX-2622] - Support static service properties that are not mirrored into fields
+    * [FELIX-2688] - iPojo "requires.filters" - Array object instead of Dictionary object
+    * [FELIX-2705] - Provide a way to extend the logger strategy
+    * [FELIX-2742] - Constructor injection of service dependencies
+    * [FELIX-2744] - Add annotations to the maven-ipojo-plugin archetype
+
+Changes from the 1.6.6 to 1.6.8
+-------------------------------
+** Improvement
+ * [FELIX-2688] - iPojo "requires.filters" - Array object instead of Dictionary object
+ * [FELIX-2705] - Provide a way to extend the logger strategy
+
+** Bug
+ * [FELIX-2685] - Wrong Element name when XML namespace contains ':'
+ * [FELIX-2694] - Instance state not recomputed after reconfiguration when the instance is stopped
+
+Changes from the 1.6.4 to 1.6.6
+-------------------------------
+** Improvement
+ * [FELIX-2594] - Have a way to create new custom iPojo handler without having to specify a handler usage
+ * [FELIX-2623] - @Update annotated methods should not require a Dictionary parameter
+
+** Bug
+ * [FELIX-2580] - iPOJO failed to create proxies on service which are not interface
+ * [FELIX-2596] - DependencyHandler.onObjectCreation throws NPE when bundle is refreshed
+ * [FELIX-2603] - wrong behavior of InstanceManager.onSet(..) method
+ * [FELIX-2636] - Cannot control the validity of an iPOJO instance using a configuration property
+
 Changes from the 1.6.2 to 1.6.4
 -------------------------------
 ** Improvement
diff --git a/ipojo/runtime/core/pom.xml b/ipojo/runtime/core/pom.xml
index 0169f41..8c3f096 100644
--- a/ipojo/runtime/core/pom.xml
+++ b/ipojo/runtime/core/pom.xml
@@ -31,14 +31,14 @@
 
   <properties>
     <!--
-        1.8.1:
+        1.8.2:
         * change in the MethodInterceptor interface (FELIX-3144)
         * change in the Factory interface (FELIX-3190)
      -->
-    <ipojo.package.version>1.8.1</ipojo.package.version>
+    <ipojo.package.version>1.8.2</ipojo.package.version>
 
     <!-- Embedded manipulator version -->
-    <ipojo.manipulator.version>1.8.0</ipojo.manipulator.version>
+    <ipojo.manipulator.version>1.8.4</ipojo.manipulator.version>
   </properties>
 
   <description>
@@ -62,7 +62,7 @@
     <dependency>
       <groupId>org.apache.felix</groupId>
       <artifactId>org.apache.felix.ipojo.metadata</artifactId>
-      <version>1.5.0-SNAPSHOT</version>
+      <version>1.6.0</version>
     </dependency>
      <dependency>
       <groupId>org.apache.felix</groupId>
@@ -168,7 +168,7 @@
       <plugin>
         <groupId>org.apache.felix</groupId>
         <artifactId>maven-ipojo-plugin</artifactId>
-        <version>1.8.0</version>
+        <version>1.8.4</version>
         <executions>
           <execution>
             <goals>
