diff --git a/power-sequencer/Makefile.am b/power-sequencer/Makefile.am
index 8806a78..02f6466 100644
--- a/power-sequencer/Makefile.am
+++ b/power-sequencer/Makefile.am
@@ -16,9 +16,11 @@
 	$(top_builddir)/libpower.la \
 	$(PHOSPHOR_LOGGING_LIBS) \
 	${PHOSPHOR_DBUS_INTERFACES_LIBS} \
-	$(SDBUSPLUS_LIBS)
+	$(SDBUSPLUS_LIBS) \
+	$(SDEVENTPLUS_LIBS)
 
 witherspoon_pseq_monitor_CXXFLAGS = \
 	$(PHOSPHOR_LOGGING_CFLAGS) \
 	${PHOSPHOR_DBUS_INTERFACES_CFLAGS} \
-	$(SDBUSPLUS_CFLAGS)
+	$(SDBUSPLUS_CFLAGS) \
+	$(SDEVENTPLUS_CFLAGS)
diff --git a/power-sequencer/main.cpp b/power-sequencer/main.cpp
index 87b8070..e383fc1 100644
--- a/power-sequencer/main.cpp
+++ b/power-sequencer/main.cpp
@@ -16,6 +16,7 @@
 #include <chrono>
 #include <iostream>
 #include <phosphor-logging/log.hpp>
+#include <sdeventplus/event.hpp>
 #include "argument.hpp"
 #include "pgood_monitor.hpp"
 #include "runtime_monitor.hpp"
@@ -45,16 +46,7 @@
 
     std::chrono::milliseconds interval{i};
 
-    sd_event* e = nullptr;
-    auto r = sd_event_default(&e);
-    if (r < 0)
-    {
-        log<level::ERR>("sd_event_default() failed",
-                        entry("ERROR=%s", strerror(-r)));
-        exit(EXIT_FAILURE);
-    }
-
-    event::Event event{e};
+	auto event = sdeventplus::Event::get_default();
     auto bus = sdbusplus::bus::new_default();
     bus.attach_event(event.get(), SD_EVENT_PRIORITY_NORMAL);
 
diff --git a/power-sequencer/pgood_monitor.cpp b/power-sequencer/pgood_monitor.cpp
index 02f1725..b9995c6 100644
--- a/power-sequencer/pgood_monitor.cpp
+++ b/power-sequencer/pgood_monitor.cpp
@@ -66,16 +66,6 @@
 }
 
 
-void PGOODMonitor::exitEventLoop()
-{
-    auto r = sd_event_exit(event.get(), EXIT_SUCCESS);
-    if (r < 0)
-    {
-        log<level::ERR>("sd_event_exit failed",
-                entry("RC = %d", r));
-    }
-}
-
 void PGOODMonitor::analyze()
 {
     //Timer callback.
@@ -93,8 +83,7 @@
 
     //The pgood-wait service (with a longer timeout)
     //will handle powering off the system.
-
-    exitEventLoop();
+    event.exit(EXIT_SUCCESS);
 }
 
 void PGOODMonitor::propertyChanged()
@@ -104,8 +93,7 @@
     if (!pgoodPending())
     {
         //PGOOD is on, or system is off, so we are done.
-        timer.stop();
-        exitEventLoop();
+        event.exit(EXIT_SUCCESS);
     }
 }
 
@@ -134,13 +122,7 @@
         }
 
         timer.start(interval);
-
-        auto r = sd_event_loop(event.get());
-        if (r < 0)
-        {
-            log<level::ERR>("sd_event_loop() failed",
-                    entry("ERROR=%d", r));
-        }
+        return event.loop();
     }
     catch (std::exception& e)
     {
diff --git a/power-sequencer/pgood_monitor.hpp b/power-sequencer/pgood_monitor.hpp
index 9cbda60..14a2735 100644
--- a/power-sequencer/pgood_monitor.hpp
+++ b/power-sequencer/pgood_monitor.hpp
@@ -2,8 +2,8 @@
 
 #include <sdbusplus/bus.hpp>
 #include <sdbusplus/server.hpp>
+#include <sdeventplus/event.hpp>
 #include "device.hpp"
-#include "event.hpp"
 #include "device_monitor.hpp"
 #include "timer.hpp"
 
@@ -45,7 +45,7 @@
          */
         PGOODMonitor(std::unique_ptr<witherspoon::power::Device>&& d,
                 sdbusplus::bus::bus& b,
-                witherspoon::power::event::Event& e,
+                const sdeventplus::Event& e,
                 std::chrono::milliseconds& t) :
             DeviceMonitor(std::move(d), e, t),
             bus(b)
diff --git a/power-sequencer/runtime_monitor.hpp b/power-sequencer/runtime_monitor.hpp
index de71dcf..d37cdc0 100644
--- a/power-sequencer/runtime_monitor.hpp
+++ b/power-sequencer/runtime_monitor.hpp
@@ -2,8 +2,8 @@
 
 #include <sdbusplus/bus.hpp>
 #include <sdbusplus/server.hpp>
+#include <sdeventplus/event.hpp>
 #include "device.hpp"
-#include "event.hpp"
 #include "device_monitor.hpp"
 #include "timer.hpp"
 
@@ -51,7 +51,7 @@
          */
         RuntimeMonitor(std::unique_ptr<witherspoon::power::Device>&& d,
                 sdbusplus::bus::bus& b,
-                witherspoon::power::event::Event& e,
+                const sdeventplus::Event& e,
                 std::chrono::milliseconds& i) :
             DeviceMonitor(std::move(d), e, i),
             bus(b),
