diff --git a/bindings/openwsman.i b/bindings/openwsman.i
index 03a6e8d..783b260 100644
--- a/bindings/openwsman.i
+++ b/bindings/openwsman.i
@@ -272,6 +272,17 @@
 }
 
 
+static epr_t *my_epr_deserialize(WsXmlNodeH node);
+static epr_t *my_epr_deserialize(WsXmlNodeH node) {
+  fprintf(stderr, "my_epr_deserialize(%s)\n", ws_xml_get_node_local_name(node));
+  if (strcmp(WSA_EPR, ws_xml_get_node_local_name(node)) == 0) {
+    /* Use node as-is if its already a WSA_EPR */
+    return epr_deserialize(node, NULL, NULL, 1);
+  }
+  /* else search the WSA_EPR node */
+  return epr_deserialize(node, XML_NS_ADDRESSING, WSA_EPR, 1);
+}
+
 
 static char *epr_prefix(const char *uri);
 /* Get prefix from a EPR uri */
diff --git a/bindings/ruby/tests/epr.rb b/bindings/ruby/tests/epr.rb
index 706bc1c..7270c34 100644
--- a/bindings/ruby/tests/epr.rb
+++ b/bindings/ruby/tests/epr.rb
@@ -58,6 +58,8 @@
   
   def test_epr_compare
     epr1 = Openwsman::EndPointReference.new "http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/Win32_Service?Name=Windows&Vendor=Microsoft"
+    assert epr1
+puts "EPR1 #{epr1}"
     # check namespace
     assert_equal "root/cimv2", epr1.namespace
 
@@ -87,8 +89,11 @@
     # convert epr1 to xml-string and parse this string
     doc = Openwsman::create_doc_from_string epr1.to_xml
     # generate epr2 from parsed xml
+    puts "DOC #{doc.to_xml}"
     epr2 = Openwsman::EndPointReference.new doc
-    
+    assert epr2
+puts "EPR2 #{epr2}"
+
     # must be true
     assert epr1.cmp(epr2)
   end
diff --git a/bindings/wsman-epr.i b/bindings/wsman-epr.i
index e879ce5..09ddb69 100644
--- a/bindings/wsman-epr.i
+++ b/bindings/wsman-epr.i
@@ -43,7 +43,7 @@
     else if (CLASS_OF(uri) == SwigClassXmlNode.klass) {
       WsXmlNodeH node;
       SWIG_ConvertPtr(uri, (void **)&node, SWIGTYPE_p___WsXmlNode, 0);
-      return epr_deserialize(node, XML_NS_ADDRESSING, WSA_EPR, 1);
+      return my_epr_deserialize(node);
     }
     else if (CLASS_OF(uri) == SwigClassXmlDoc.klass) {
       WsXmlDocH doc;
@@ -52,7 +52,7 @@
       node = ws_xml_get_soap_body(doc);
       if (node == NULL)
         node = ws_xml_get_doc_root(doc);
-      return epr_deserialize(node, NULL, NULL, 1);
+      return my_epr_deserialize(node);
     }
     else {
       return epr_from_string(as_string(uri));
@@ -102,6 +102,7 @@
     "$result = ($1 == 0) ? Qtrue : Qfalse;";
 #endif
   int cmp(epr_t *epr2) {
+    fprintf(stderr, "%p.cmp(%p)\n", $self, epr2);
     return epr_cmp($self, epr2);
   }
   
