diff --git a/include/sdbusplus/message/native_types.hpp b/include/sdbusplus/message/native_types.hpp
index fe695c6..f93d775 100644
--- a/include/sdbusplus/message/native_types.hpp
+++ b/include/sdbusplus/message/native_types.hpp
@@ -1,5 +1,7 @@
 #pragma once
 
+#include <sdbusplus/utility/memory.hpp>
+
 #include <string>
 
 namespace sdbusplus
@@ -76,6 +78,7 @@
         return l < r.str;
     }
 };
+
 /** Simple wrapper class for std::string to allow conversion to and from an
  *  alternative typename. */
 struct string_path_wrapper
@@ -143,18 +146,15 @@
 
     std::string filename() const
     {
-        auto index = str.rfind('/');
-        if (index == std::string::npos)
+        std::string parent = parent_path();
+        _cleanup_free_ char* out = nullptr;
+        int r = sd_bus_path_decode(str.c_str(), parent.c_str(), &out);
+        if (r <= 0)
         {
             return "";
         }
-        index++;
-        if (index >= str.size())
-        {
-            return "";
-        }
-
-        return str.substr(index);
+        std::string ret(out);
+        return ret;
     }
 
     string_path_wrapper parent_path() const
@@ -171,6 +171,24 @@
 
         return str.substr(0, index);
     }
+
+    string_path_wrapper operator/(const std::string& extId)
+    {
+        return this->operator/(extId.c_str());
+    }
+
+    string_path_wrapper operator/(const char* extId)
+    {
+        string_path_wrapper out;
+        _cleanup_free_ char* encOut = nullptr;
+        int ret = sd_bus_path_encode(str.c_str(), extId, &encOut);
+        if (ret < 0)
+        {
+            return out;
+        }
+        out.str = encOut;
+        return out;
+    }
 };
 
 /** Typename for sdbus SIGNATURE types. */
diff --git a/include/sdbusplus/utility/memory.hpp b/include/sdbusplus/utility/memory.hpp
new file mode 100644
index 0000000..49dc999
--- /dev/null
+++ b/include/sdbusplus/utility/memory.hpp
@@ -0,0 +1,16 @@
+#pragma once
+
+#include <cstdlib>
+
+static inline void* mfree(void* memory)
+{
+    free(memory);
+    return NULL;
+}
+
+static inline void freep(void* p)
+{
+    *(void**)p = mfree(*(void**)p);
+}
+#define _cleanup_free_ _cleanup_(freep)
+#define _cleanup_(x) __attribute__((__cleanup__(x)))
\ No newline at end of file
diff --git a/test/message/types.cpp b/test/message/types.cpp
index 9f82f0a..b47d39b 100644
--- a/test/message/types.cpp
+++ b/test/message/types.cpp
@@ -41,7 +41,7 @@
     ASSERT_EQ(dbus_string(sdbusplus::message::object_path("/asdf")), "o");
 }
 
-TEST(MessageTypes, ObjectPathLeaf)
+TEST(MessageTypes, ObjectPathFilename)
 {
     ASSERT_EQ(sdbusplus::message::object_path("/abc/def").filename(), "def");
     ASSERT_EQ(sdbusplus::message::object_path("/abc/").filename(), "");
@@ -49,6 +49,9 @@
     ASSERT_EQ(sdbusplus::message::object_path("/").filename(), "");
     ASSERT_EQ(sdbusplus::message::object_path("").filename(), "");
     ASSERT_EQ(sdbusplus::message::object_path("abc").filename(), "");
+    ASSERT_EQ(sdbusplus::message::object_path("/_2d").filename(), "-");
+    ASSERT_EQ(sdbusplus::message::object_path("/_20").filename(), " ");
+    ASSERT_EQ(sdbusplus::message::object_path("/_2F").filename(), "/");
 }
 
 TEST(MessageTypes, ObjectPathParent)
@@ -63,6 +66,24 @@
               sdbusplus::message::object_path("/"));
 }
 
+TEST(MessageTypes, ObjectPathOperatorSlash)
+{
+    ASSERT_EQ(sdbusplus::message::object_path("/") / "abc",
+              sdbusplus::message::object_path("/abc"));
+    ASSERT_EQ(sdbusplus::message::object_path("/abc") / "def",
+              sdbusplus::message::object_path("/abc/def"));
+    ASSERT_EQ(sdbusplus::message::object_path("/abc") / "-",
+              sdbusplus::message::object_path("/abc/_2d"));
+    ASSERT_EQ(sdbusplus::message::object_path("/abc") / " ",
+              sdbusplus::message::object_path("/abc/_20"));
+    ASSERT_EQ(sdbusplus::message::object_path("/abc") / "/",
+              sdbusplus::message::object_path("/abc/_2f"));
+
+    // Test the std::string overload.  This is largely just for coverage
+    ASSERT_EQ(sdbusplus::message::object_path("/") / std::string("abc"),
+              sdbusplus::message::object_path("/abc"));
+}
+
 TEST(MessageTypes, Signature)
 {
     ASSERT_EQ(dbus_string(sdbusplus::message::signature("sss")), "g");
