diff --git a/attn/attn_dbus.cpp b/attn/attn_dbus.cpp
index c40d146..21fae6f 100644
--- a/attn/attn_dbus.cpp
+++ b/attn/attn_dbus.cpp
@@ -12,8 +12,7 @@
 /** @brief Create a dbus method */
 int dbusMethod(const std::string& i_path, const std::string& i_interface,
                const std::string& i_function,
-               sdbusplus::message::message& o_method,
-               const std::string& i_extended)
+               sdbusplus::message::message& o_method)
 {
     int rc = RC_DBUS_ERROR; // assume error
 
@@ -46,22 +45,10 @@
         {
             auto service = responseFindService.begin()->first;
 
-            // Some methods (e.g. get attribute) take an extended parameter
-            if (i_extended == "")
-            {
-                // return the method
-                o_method = bus.new_method_call(service.c_str(), i_path.c_str(),
-                                               i_interface.c_str(),
-                                               i_function.c_str());
-            }
-            else
-            {
-                // return extended method
-                o_method =
-                    bus.new_method_call(service.c_str(), i_path.c_str(),
-                                        i_extended.c_str(), i_function.c_str());
-            }
-
+            // return the method
+            o_method =
+                bus.new_method_call(service.c_str(), i_path.c_str(),
+                                    i_interface.c_str(), i_function.c_str());
             rc = RC_SUCCESS;
         }
         else
diff --git a/attn/attn_dbus.hpp b/attn/attn_dbus.hpp
index 59291a7..2d72740 100644
--- a/attn/attn_dbus.hpp
+++ b/attn/attn_dbus.hpp
@@ -18,14 +18,12 @@
  * @param i_interface - dbus method interface
  * @param i_function - dbus interface function
  * @param o_method - method that is created
- * @param i_extended - optional for extended methods
  * @return non-zero if error
  *
  **/
 int dbusMethod(const std::string& i_path, const std::string& i_interface,
                const std::string& i_function,
-               sdbusplus::message::message& o_method,
-               const std::string& i_extended = "");
+               sdbusplus::message::message& o_method);
 
 /**
  * Create a PEL for the specified event type
