diff --git a/meecrowave-core/src/main/java/org/apache/meecrowave/cxf/MeecrowaveBus.java b/meecrowave-core/src/main/java/org/apache/meecrowave/cxf/MeecrowaveBus.java
index a019f5c..ecdb2c4 100644
--- a/meecrowave-core/src/main/java/org/apache/meecrowave/cxf/MeecrowaveBus.java
+++ b/meecrowave-core/src/main/java/org/apache/meecrowave/cxf/MeecrowaveBus.java
@@ -23,6 +23,7 @@
 import java.util.Map;
 
 import javax.enterprise.context.ApplicationScoped;
+import javax.enterprise.inject.Typed;
 import javax.inject.Inject;
 import javax.inject.Named;
 import javax.servlet.ServletContext;
@@ -35,8 +36,9 @@
 import org.apache.meecrowave.Meecrowave;
 
 @Named("cxf")
+@Typed({MeecrowaveBus.class, Bus.class})
 @ApplicationScoped
-public class MeecrowaveBus implements Bus {
+public class MeecrowaveBus implements Bus, ClassUnwrapper {
     private final ConfigurableBus delegate = new ConfigurableBus();
 
     protected MeecrowaveBus() {
@@ -45,7 +47,7 @@
 
     @Inject
     public MeecrowaveBus(final ServletContext context) {
-        setProperty(ClassUnwrapper.class.getName(), (ClassUnwrapper) this::getRealClass);
+        setProperty(ClassUnwrapper.class.getName(), this);
 
         final ClassLoader appLoader = context.getClassLoader();
         setExtension(appLoader, ClassLoader.class); // ServletController locks on the classloader otherwise
@@ -60,11 +62,16 @@
     /**
      * Unwrap all proxies and get the real underlying class
      * for detecting annotations, etc.
-     * @param o
-     * @return
+     * @param o the instance to analyze.
+     * @return the class to introspect.
      */
-    protected Class<?> getRealClass(Object o) {
-        final Class<?> aClass = o.getClass();
+    @Override
+    public Class<?> getRealClass(Object o) {
+        return getRealClassFromClass(o.getClass());
+    }
+
+    @Override
+    public Class<?> getRealClassFromClass(final Class<?> aClass) {
         if (aClass.getName().contains("$$")) {
             Class realClass = aClass.getSuperclass();
             if (realClass == Object.class || realClass.isInterface()) {
diff --git a/pom.xml b/pom.xml
index 0201430..2ec95c6 100644
--- a/pom.xml
+++ b/pom.xml
@@ -52,7 +52,7 @@
     <junit.version>4.12</junit.version>
     <tomcat.version>9.0.19</tomcat.version>
     <openwebbeans.version>2.0.10</openwebbeans.version>
-    <cxf.version>3.3.1</cxf.version>
+    <cxf.version>3.3.2</cxf.version>
     <johnzon.version>1.1.10</johnzon.version>
     <log4j2.version>2.11.1</log4j2.version>
     <deltaspike.version>1.8.2</deltaspike.version>
@@ -217,8 +217,8 @@
     </profile>
   </profiles>
 
-<!-- only needed when under development
   <repositories>
+<!-- only needed when under development
     <repository>
       <id>asf-snapshot</id>
       <url>https://repository.apache.org/content/repositories/snapshots/</url>
@@ -229,6 +229,16 @@
         <enabled>true</enabled>
       </snapshots>
     </repository>
-  </repositories>
 -->
+    <repository>
+      <id>cxf-staging</id>
+      <url>https://repository.apache.org/content/repositories/orgapachecxf-1141/</url>
+      <releases>
+        <enabled>true</enabled>
+      </releases>
+      <snapshots>
+        <enabled>false</enabled>
+      </snapshots>
+    </repository>
+  </repositories>
 </project>
