diff --git a/src/main/java/org/apache/aries/blueprint/BeanProcessor.java b/src/main/java/org/apache/aries/blueprint/BeanProcessor.java
index 760da79..bdaf3c6 100644
--- a/src/main/java/org/apache/aries/blueprint/BeanProcessor.java
+++ b/src/main/java/org/apache/aries/blueprint/BeanProcessor.java
@@ -24,7 +24,7 @@
  * TODO: javadoc
  *
  * Processors must be advertized as being such.  This can be done by using
- * the custom attribtue defined in the extension schema.
+ * the custom attribute defined in the extension schema.
  * <pre>
  *    &lt;bp:bean ext:role="processor" ...&gt;
  * </pre>
diff --git a/src/main/java/org/apache/aries/blueprint/BlueprintConstants.java b/src/main/java/org/apache/aries/blueprint/BlueprintConstants.java
index eaaa771..027194c 100644
--- a/src/main/java/org/apache/aries/blueprint/BlueprintConstants.java
+++ b/src/main/java/org/apache/aries/blueprint/BlueprintConstants.java
@@ -20,21 +20,32 @@
 
 public interface BlueprintConstants  {
    
-    public static final String BUNDLE_BLUEPRINT_HEADER = "Bundle-Blueprint";
+    String BUNDLE_BLUEPRINT_HEADER = "Bundle-Blueprint";
     
-    public static final String BUNDLE_BLUEPRINT_ANNOTATION_HEADER = "Bundle-Blueprint-Annotation";
+    String BUNDLE_BLUEPRINT_ANNOTATION_HEADER = "Bundle-Blueprint-Annotation";
     
-    public static final String TIMEOUT_DIRECTIVE = "blueprint.timeout";
+    String TIMEOUT_DIRECTIVE = "blueprint.timeout";
     
-    public static final String GRACE_PERIOD = "blueprint.graceperiod";
+    String GRACE_PERIOD = "blueprint.graceperiod";
     
-    public static final String BUNDLE_VERSION = "bundle.version";
+    String BUNDLE_VERSION = "bundle.version";
     
-    public static final String COMPONENT_NAME_PROPERTY = "osgi.service.blueprint.compname";
+    String COMPONENT_NAME_PROPERTY = "osgi.service.blueprint.compname";
     
-    public static final String CONTAINER_SYMBOLIC_NAME_PROPERTY = "osgi.blueprint.container.symbolicname";
+    String CONTAINER_SYMBOLIC_NAME_PROPERTY = "osgi.blueprint.container.symbolicname";
     
-    public static final String CONTAINER_VERSION_PROPERTY = "osgi.blueprint.container.version";
+    String CONTAINER_VERSION_PROPERTY = "osgi.blueprint.container.version";
 
-    public static final String XML_VALIDATION = "blueprint.aries.xml-validation";
+    String XML_VALIDATION = "blueprint.aries.xml-validation";
+
+    String USE_SYSTEM_CONTEXT_PROPERTY = "org.apache.aries.blueprint.use.system.context";
+
+    String IGNORE_UNKNOWN_NAMESPACE_HANDLERS_PROPERTY = "org.apache.aries.blueprint.parser.service.ignore.unknown.namespace.handlers";
+
+    String PREEMPTIVE_SHUTDOWN_PROPERTY = "org.apache.aries.blueprint.preemptiveShutdown";
+
+    String SYNCHRONOUS_PROPERTY = "org.apache.aries.blueprint.synchronous";
+
+    String XML_VALIDATION_PROPERTY = "org.apache.aries.blueprint.xml.validation";
+
 }
diff --git a/src/main/java/org/apache/aries/blueprint/ExtendedBeanMetadata.java b/src/main/java/org/apache/aries/blueprint/ExtendedBeanMetadata.java
index d0e9a35..d53895d 100644
--- a/src/main/java/org/apache/aries/blueprint/ExtendedBeanMetadata.java
+++ b/src/main/java/org/apache/aries/blueprint/ExtendedBeanMetadata.java
@@ -47,4 +47,16 @@
      * @return Whether field injection is allowed
      */
     boolean getFieldInjection();
+
+    /**
+     * Whether arguments / properties conversion is strict or lenient.
+     * @return The type of conversion.
+     */
+    boolean getRawConversion();
+
+    /**
+     * Whether setters returning non void types can be used or not.
+     * @return a boolean allowing the used of non standard setters
+     */
+    boolean getNonStandardSetters();
 }
diff --git a/src/main/java/org/apache/aries/blueprint/ExtendedReferenceMetadata.java b/src/main/java/org/apache/aries/blueprint/ExtendedReferenceMetadata.java
index 86b6549..09838f6 100644
--- a/src/main/java/org/apache/aries/blueprint/ExtendedReferenceMetadata.java
+++ b/src/main/java/org/apache/aries/blueprint/ExtendedReferenceMetadata.java
@@ -24,9 +24,22 @@
 
 public interface ExtendedReferenceMetadata extends ReferenceMetadata 
 {
+    public int DAMPING_RELUCTANT = 0;
+
+    public int DAMPING_GREEDY = 1;
+
+    public int LIFECYCLE_DYNAMIC = 0;
+
+    public int LIFECYCLE_STATIC = 1;
+
     public String getDefaultBean();
     
     public Collection<Class<?>> getProxyChildBeanClasses();
     
     public Collection<String> getExtraInterfaces();
+
+    public int getDamping();
+
+    public int getLifecycle();
+
 }
\ No newline at end of file
diff --git a/src/main/java/org/apache/aries/blueprint/NamespaceHandler2.java b/src/main/java/org/apache/aries/blueprint/NamespaceHandler2.java
index 86d3d59..5d26364 100644
--- a/src/main/java/org/apache/aries/blueprint/NamespaceHandler2.java
+++ b/src/main/java/org/apache/aries/blueprint/NamespaceHandler2.java
@@ -28,13 +28,4 @@
      */
     boolean usePsvi();
 
-    /**
-     * <p>A hint for a registry of handlers that this handler actually may resolve given namespace
-     * and {@link NamespaceHandler#getSchemaLocation(String) return a location for XSD resource} for it.</p>
-     * <p>Some handlers return <em>some</em> XSD resource when asked for location of unknown namespace</p>
-     * @param namespace
-     * @return
-     */
-    boolean mayResolve(String namespace);
-
 }
diff --git a/src/main/java/org/apache/aries/blueprint/ParserContext.java b/src/main/java/org/apache/aries/blueprint/ParserContext.java
index 75abb81..001d408 100644
--- a/src/main/java/org/apache/aries/blueprint/ParserContext.java
+++ b/src/main/java/org/apache/aries/blueprint/ParserContext.java
@@ -17,6 +17,7 @@
 package org.apache.aries.blueprint;
 
 import java.net.URI;
+import java.util.Set;
 
 import org.osgi.service.blueprint.reflect.ComponentMetadata;
 import org.osgi.service.blueprint.reflect.Metadata;
@@ -90,6 +91,11 @@
     String getDefaultTimeout();
 
     /**
+     * Retrieve the set of namespaces
+     */
+    Set<URI> getNamespaces();
+
+    /**
      * Retrieve the namespace handler for the given uri
      */
     NamespaceHandler getNamespaceHandler(URI namespaceUri);
diff --git a/src/main/java/org/apache/aries/blueprint/mutable/MutableBeanMetadata.java b/src/main/java/org/apache/aries/blueprint/mutable/MutableBeanMetadata.java
index c871577..7ec2842 100644
--- a/src/main/java/org/apache/aries/blueprint/mutable/MutableBeanMetadata.java
+++ b/src/main/java/org/apache/aries/blueprint/mutable/MutableBeanMetadata.java
@@ -61,4 +61,7 @@
     
     void setFieldInjection(boolean allowFieldInjection);
 
+    void setRawConversion(boolean rawConversion);
+
+    void setNonStandardSetters(boolean nonStandardSetters);
 }
diff --git a/src/main/java/org/apache/aries/blueprint/mutable/MutableReferenceMetadata.java b/src/main/java/org/apache/aries/blueprint/mutable/MutableReferenceMetadata.java
index dda5786..5a4ddc4 100644
--- a/src/main/java/org/apache/aries/blueprint/mutable/MutableReferenceMetadata.java
+++ b/src/main/java/org/apache/aries/blueprint/mutable/MutableReferenceMetadata.java
@@ -36,4 +36,8 @@
     void setProxyChildBeanClasses(Collection<Class<?>> classes);
 
     void setExtraInterfaces(Collection<String> interfaces);
+
+    void setDamping(int damping);
+
+    void setLifecycle(int lifecycle);
 }
\ No newline at end of file
diff --git a/src/main/java/org/apache/aries/blueprint/parser/ParserContextImpl.java b/src/main/java/org/apache/aries/blueprint/parser/ParserContextImpl.java
index a079ad7..8075420 100644
--- a/src/main/java/org/apache/aries/blueprint/parser/ParserContextImpl.java
+++ b/src/main/java/org/apache/aries/blueprint/parser/ParserContextImpl.java
@@ -19,6 +19,8 @@
 package org.apache.aries.blueprint.parser;
 
 import java.net.URI;
+import java.util.Collections;
+import java.util.Set;
 
 import org.apache.aries.blueprint.ComponentDefinitionRegistry;
 import org.apache.aries.blueprint.NamespaceHandler;
@@ -93,6 +95,11 @@
     }
 
     @Override
+    public Set<URI> getNamespaces() {
+        return Collections.unmodifiableSet(parser.getNamespaces());
+    }
+
+    @Override
     public NamespaceHandler getNamespaceHandler(URI namespaceUri) {
         return parser.getNamespaceHandler(namespaceUri);
     }
diff --git a/src/main/java/org/apache/aries/blueprint/reflect/BeanMetadataImpl.java b/src/main/java/org/apache/aries/blueprint/reflect/BeanMetadataImpl.java
index 2096738..225e5e1 100644
--- a/src/main/java/org/apache/aries/blueprint/reflect/BeanMetadataImpl.java
+++ b/src/main/java/org/apache/aries/blueprint/reflect/BeanMetadataImpl.java
@@ -51,6 +51,8 @@
     private Class runtimeClass;
     private boolean processor;
     private boolean fieldInjection;
+    private boolean rawConversion;
+    private boolean nonStandardSetters;
     
     public BeanMetadataImpl() {
         this.fieldInjection = false;
@@ -75,8 +77,12 @@
         if (source instanceof ExtendedBeanMetadata) {
             this.runtimeClass = ((ExtendedBeanMetadata) source).getRuntimeClass();
             this.fieldInjection = ((ExtendedBeanMetadata) source).getFieldInjection();
+            this.rawConversion = ((ExtendedBeanMetadata) source).getRawConversion();
+            this.nonStandardSetters = ((ExtendedBeanMetadata) source).getNonStandardSetters();
         } else {
             this.fieldInjection = false;
+            this.rawConversion = false;
+            this.nonStandardSetters = false;
         }
     }
     
@@ -214,6 +220,23 @@
         this.fieldInjection = fieldInjection;
     }
     
+    public boolean getRawConversion() {
+        return rawConversion;
+    }
+
+    public void setRawConversion(boolean rawConversion) {
+        this.rawConversion = rawConversion;
+    }
+
+    public boolean getNonStandardSetters() {
+        return nonStandardSetters;
+    }
+
+    @Override
+    public void setNonStandardSetters(boolean nonStandardSetters) {
+        this.nonStandardSetters = nonStandardSetters;
+    }
+
     @Override
     public String toString() {
         return "BeanMetadata[" +
diff --git a/src/main/java/org/apache/aries/blueprint/reflect/ReferenceMetadataImpl.java b/src/main/java/org/apache/aries/blueprint/reflect/ReferenceMetadataImpl.java
index 76ed4fc..ca3d78c 100644
--- a/src/main/java/org/apache/aries/blueprint/reflect/ReferenceMetadataImpl.java
+++ b/src/main/java/org/apache/aries/blueprint/reflect/ReferenceMetadataImpl.java
@@ -35,6 +35,8 @@
     private String defaultBeanId;
     private Collection<Class<?>> proxyChildBeanClasses;
     private Collection<String> extraInterfaces;
+    private int damping;
+    private int lifecycle;
 
     public ReferenceMetadataImpl() {
     }
@@ -73,6 +75,8 @@
                 ", referenceListeners=" + referenceListeners +
                 ", timeout=" + timeout +
                 ", additonalInterfaces=" + getExtraInterfaces() +
+                ", damping=" + getDamping() +
+                ", lifecycle=" + getLifecycle() +
                 ']';
     }
 
@@ -94,4 +98,20 @@
     public void setExtraInterfaces(Collection<String> interfaces) {
         extraInterfaces = interfaces;
     }
+
+    public int getDamping() {
+        return damping;
+    }
+
+    public void setDamping(int damping) {
+        this.damping = damping;
+    }
+
+    public int getLifecycle() {
+        return lifecycle;
+    }
+
+    public void setLifecycle(int lifecycle) {
+        this.lifecycle = lifecycle;
+    }
 }
