diff --git a/power-sequencer/runtime_monitor.cpp b/power-sequencer/runtime_monitor.cpp
index 966becc..9bfeaf0 100644
--- a/power-sequencer/runtime_monitor.cpp
+++ b/power-sequencer/runtime_monitor.cpp
@@ -13,8 +13,10 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+#include <org/open_power/Witherspoon/Fault/error.hpp>
 #include <phosphor-logging/log.hpp>
 #include "config.h"
+#include "elog-errors.hpp"
 #include "runtime_monitor.hpp"
 #include "utility.hpp"
 
@@ -24,6 +26,7 @@
 {
 
 using namespace phosphor::logging;
+using namespace sdbusplus::org::open_power::Witherspoon::Fault::Error;
 
 int RuntimeMonitor::run()
 {
@@ -49,7 +52,7 @@
         //power, so it will be killed by systemd sometime shortly
         //after this power off is issued.
 
-        util::powerOff(bus);
+        util::powerOff<Shutdown>(bus);
     }
     catch (std::exception& e)
     {
diff --git a/power-sequencer/ucd90160.cpp b/power-sequencer/ucd90160.cpp
index 1f7f167..ac2caa5 100644
--- a/power-sequencer/ucd90160.cpp
+++ b/power-sequencer/ucd90160.cpp
@@ -398,7 +398,8 @@
 
     if (shutdown)
     {
-        util::powerOff(bus);
+        //Will be replaced with a GPU specific error in a future commit
+        util::powerOff<power_error::Shutdown>(bus);
     }
 
     return errorFound;
diff --git a/utility.cpp b/utility.cpp
index e54f839..ac614d4 100644
--- a/utility.cpp
+++ b/utility.cpp
@@ -13,8 +13,6 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-#include <org/open_power/Witherspoon/Fault/error.hpp>
-#include "elog-errors.hpp"
 #include "utility.hpp"
 
 namespace witherspoon
@@ -27,13 +25,8 @@
 constexpr auto MAPPER_BUSNAME = "xyz.openbmc_project.ObjectMapper";
 constexpr auto MAPPER_PATH = "/xyz/openbmc_project/object_mapper";
 constexpr auto MAPPER_INTERFACE = "xyz.openbmc_project.ObjectMapper";
-constexpr auto SYSTEMD_SERVICE   = "org.freedesktop.systemd1";
-constexpr auto SYSTEMD_ROOT      = "/org/freedesktop/systemd1";
-constexpr auto SYSTEMD_INTERFACE = "org.freedesktop.systemd1.Manager";
-constexpr auto POWEROFF_TARGET   = "obmc-chassis-hard-poweroff@0.target";
 
 using namespace phosphor::logging;
-using namespace sdbusplus::org::open_power::Witherspoon::Fault::Error;
 
 
 std::string getService(const std::string& path,
@@ -74,24 +67,6 @@
     return response.begin()->first;
 }
 
-
-void powerOff(sdbusplus::bus::bus& bus)
-{
-    log<level::INFO>("Powering off due to a power fault");
-    report<Shutdown>();
-
-    auto method = bus.new_method_call(SYSTEMD_SERVICE,
-            SYSTEMD_ROOT,
-            SYSTEMD_INTERFACE,
-            "StartUnit");
-
-    method.append(POWEROFF_TARGET);
-    method.append("replace");
-
-    bus.call_noreply(method);
-}
-
-
 }
 }
 }
diff --git a/utility.hpp b/utility.hpp
index fdae252..0a9bdb4 100644
--- a/utility.hpp
+++ b/utility.hpp
@@ -1,6 +1,7 @@
 #pragma once
 
 #include <phosphor-logging/log.hpp>
+#include <phosphor-logging/elog.hpp>
 #include <sdbusplus/bus.hpp>
 #include <string>
 
@@ -11,6 +12,10 @@
 namespace util
 {
 
+constexpr auto SYSTEMD_SERVICE   = "org.freedesktop.systemd1";
+constexpr auto SYSTEMD_ROOT      = "/org/freedesktop/systemd1";
+constexpr auto SYSTEMD_INTERFACE = "org.freedesktop.systemd1.Manager";
+constexpr auto POWEROFF_TARGET   = "obmc-chassis-hard-poweroff@0.target";
 constexpr auto PROPERTY_INTF = "org.freedesktop.DBus.Properties";
 
 /**
@@ -48,9 +53,9 @@
     sdbusplus::message::variant<T> property;
 
     auto method = bus.new_method_call(service.c_str(),
-            path.c_str(),
-            PROPERTY_INTF,
-            "Get");
+                                      path.c_str(),
+                                      PROPERTY_INTF,
+                                      "Get");
 
     method.append(interface, propertyName);
 
@@ -59,9 +64,9 @@
     {
         using namespace phosphor::logging;
         log<level::ERR>("Error in property get call",
-                entry("PATH=%s", path.c_str()),
-                entry("PROPERTY=%s", propertyName.c_str()));
-        //
+                        entry("PATH=%s", path.c_str()),
+                        entry("PROPERTY=%s", propertyName.c_str()));
+
         // TODO openbmc/openbmc#851 - Once available, throw returned error
         throw std::runtime_error("Error in property get call");
     }
@@ -71,12 +76,26 @@
 }
 
 /**
- * Powers off the system and logs an error
- * saying it was due to a power fault.
+ * Logs an error and powers off the system.
  *
+ * @tparam T - error that will be logged before the power off
  * @param[in] bus - D-Bus object
  */
-void powerOff(sdbusplus::bus::bus& bus);
+template<typename T>
+void powerOff(sdbusplus::bus::bus& bus)
+{
+    phosphor::logging::report<T>();
+
+    auto method = bus.new_method_call(SYSTEMD_SERVICE,
+                                      SYSTEMD_ROOT,
+                                      SYSTEMD_INTERFACE,
+                                      "StartUnit");
+
+    method.append(POWEROFF_TARGET);
+    method.append("replace");
+
+    bus.call_noreply(method);
+}
 
 }
 }
