diff --git a/metatype/changelog.txt b/metatype/changelog.txt
index 07a73a2..89f4cfa 100644
--- a/metatype/changelog.txt
+++ b/metatype/changelog.txt
@@ -1,3 +1,11 @@
+Changes from 1.0.12 to 1.1.0
+-----------------------------
+
+** Improvement
+    * [FELIX-4980] - Add capabilities for metatype R6
+    * [FELIX-4973] - Relax exception handling when reading metatype XML
+
+
 Changes from 1.0.10 to 1.0.12
 -----------------------------
 
diff --git a/metatype/pom.xml b/metatype/pom.xml
index 9d08014..dcd42be 100644
--- a/metatype/pom.xml
+++ b/metatype/pom.xml
@@ -38,13 +38,13 @@
         <dependency>
             <groupId>org.osgi</groupId>
             <artifactId>org.osgi.core</artifactId>
-            <version>4.0.0</version>
+            <version>5.0.0</version>
             <scope>provided</scope>
         </dependency>
         <dependency>
             <groupId>org.osgi</groupId>
-            <artifactId>org.osgi.compendium</artifactId>
-            <version>4.3.0</version>
+            <artifactId>osgi.cmpn</artifactId>
+            <version>6.0.0</version>
             <scope>provided</scope>
         </dependency>
         <dependency>
@@ -76,6 +76,10 @@
                         <Bundle-DocURL>
                             http://felix.apache.org/site/apache-felix-metatype-service.html
                         </Bundle-DocURL>
+                        <Import-Package>
+                            org.osgi.framework;version="[1.3,2)",
+                            *
+                        </Import-Package>
                         <Export-Package>
                             org.apache.felix.metatype; version=1.2,
                             org.osgi.service.metatype; provide:=true
@@ -87,6 +91,14 @@
                         <Bundle-Activator>
                             org.apache.felix.metatype.internal.Activator
                         </Bundle-Activator>
+                        <Provide-Capability>
+                            osgi.implementation;osgi.implementation="osgi.metatype";version:Version="1.3";
+                            uses:="org.osgi.service.metatype",
+                            osgi.extender;osgi.extender="osgi.metatype";version:Version="1.3";
+                            uses:="org.osgi.service.metatype",
+                            osgi.service;objectClass:List&lt;String&gt;="org.osgi.service.metatype.MetaTypeService";
+                            uses:="org.osgi.service.metatype"
+                        </Provide-Capability>
                         <Embed-Dependency>
                             kxml2;inline=org/kxml2/io/KXmlParser.class|org/xmlpull/v1/XmlPull**
                         </Embed-Dependency>
diff --git a/metatype/src/test/java/org/apache/felix/metatype/MockBundle.java b/metatype/src/test/java/org/apache/felix/metatype/MockBundle.java
index 153298e..5584e02 100644
--- a/metatype/src/test/java/org/apache/felix/metatype/MockBundle.java
+++ b/metatype/src/test/java/org/apache/felix/metatype/MockBundle.java
@@ -19,17 +19,22 @@
 package org.apache.felix.metatype;
 
 
+import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
 import java.net.URL;
+import java.security.cert.X509Certificate;
 import java.util.Dictionary;
 import java.util.Enumeration;
 import java.util.Hashtable;
+import java.util.List;
+import java.util.Map;
 import java.util.NoSuchElementException;
 
 import org.osgi.framework.Bundle;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.ServiceReference;
+import org.osgi.framework.Version;
 
 
 public class MockBundle implements Bundle
@@ -196,4 +201,34 @@
     public void update( InputStream in )
     {
     }
+
+
+    public int compareTo(Bundle o)
+    {
+        return 0;
+    }
+
+
+    public Map<X509Certificate, List<X509Certificate>> getSignerCertificates(int signersType)
+    {
+        return null;
+    }
+
+
+    public Version getVersion()
+    {
+        return null;
+    }
+
+
+    public <A> A adapt(Class<A> type)
+    {
+        return null;
+    }
+
+
+    public File getDataFile(String filename)
+    {
+        return null;
+    }
 }
diff --git a/metatype/src/test/java/org/apache/felix/metatype/MockBundleContext.java b/metatype/src/test/java/org/apache/felix/metatype/MockBundleContext.java
index 08cbac0..a23fcfb 100644
--- a/metatype/src/test/java/org/apache/felix/metatype/MockBundleContext.java
+++ b/metatype/src/test/java/org/apache/felix/metatype/MockBundleContext.java
@@ -22,6 +22,7 @@
 import java.io.File;
 import java.io.InputStream;
 import java.util.ArrayList;
+import java.util.Collection;
 import java.util.Dictionary;
 import java.util.Enumeration;
 import java.util.HashMap;
@@ -37,6 +38,7 @@
 import org.osgi.framework.Constants;
 import org.osgi.framework.Filter;
 import org.osgi.framework.FrameworkListener;
+import org.osgi.framework.InvalidSyntaxException;
 import org.osgi.framework.ServiceEvent;
 import org.osgi.framework.ServiceListener;
 import org.osgi.framework.ServiceReference;
@@ -124,6 +126,13 @@
                 return true;
             }
 
+
+            public boolean matches(Map<String, ?> map)
+            {
+
+               return false;
+            }
+
         };
     }
 
@@ -308,6 +317,31 @@
     }
 
 
+    public <S> ServiceRegistration<S> registerService(Class<S> clazz, S service, Dictionary<String, ?> properties)
+    {
+        return null;
+    }
+
+
+    public <S> ServiceReference<S> getServiceReference(Class<S> clazz)
+    {
+        return null;
+    }
+
+
+    public <S> Collection<ServiceReference<S>> getServiceReferences(Class<S> clazz, String filter)
+            throws InvalidSyntaxException
+    {
+        return null;
+    }
+
+
+    public Bundle getBundle(String location)
+    {
+        return null;
+    }
+
+
     private void fireServiceEvent( ServiceReference ref, int type )
     {
         ServiceEvent se = new ServiceEvent( type, ref );
