diff --git a/test/bmc_update_mock.hpp b/test/bmc_update_mock.hpp
deleted file mode 100644
index 296b513..0000000
--- a/test/bmc_update_mock.hpp
+++ /dev/null
@@ -1,27 +0,0 @@
-#pragma once
-
-#include "status.hpp"
-#include "update.hpp"
-
-#include <memory>
-#include <vector>
-
-#include <gmock/gmock.h>
-
-namespace ipmi_flash
-{
-
-class UpdateMock : public UpdateInterface
-{
-  public:
-    MOCK_METHOD0(triggerUpdate, bool());
-    MOCK_METHOD0(abortUpdate, void());
-    MOCK_METHOD0(status, ActionStatus());
-};
-
-std::unique_ptr<UpdateInterface> CreateUpdateMock()
-{
-    return std::make_unique<UpdateMock>();
-}
-
-} // namespace ipmi_flash
diff --git a/test/firmware_canhandle_unittest.cpp b/test/firmware_canhandle_unittest.cpp
index c9685bd..7fb4c7f 100644
--- a/test/firmware_canhandle_unittest.cpp
+++ b/test/firmware_canhandle_unittest.cpp
@@ -1,9 +1,8 @@
-#include "bmc_update_mock.hpp"
 #include "data_mock.hpp"
 #include "firmware_handler.hpp"
 #include "image_mock.hpp"
+#include "triggerable_mock.hpp"
 #include "util.hpp"
-#include "verification_mock.hpp"
 
 #include <vector>
 
@@ -34,7 +33,7 @@
     };
 
     auto handler = FirmwareBlobHandler::CreateFirmwareBlobHandler(
-        blobs, data, CreateVerifyMock(), CreateUpdateMock());
+        blobs, data, CreateTriggerMock(), CreateTriggerMock());
 
     for (const auto& item : items)
     {
diff --git a/test/firmware_close_unittest.cpp b/test/firmware_close_unittest.cpp
index a46973f..66b9c83 100644
--- a/test/firmware_close_unittest.cpp
+++ b/test/firmware_close_unittest.cpp
@@ -2,8 +2,8 @@
 #include "firmware_handler.hpp"
 #include "firmware_unittest.hpp"
 #include "image_mock.hpp"
+#include "triggerable_mock.hpp"
 #include "util.hpp"
-#include "verification_mock.hpp"
 
 #include <memory>
 #include <vector>
diff --git a/test/firmware_commit_unittest.cpp b/test/firmware_commit_unittest.cpp
index 37e619e..11ce3fc 100644
--- a/test/firmware_commit_unittest.cpp
+++ b/test/firmware_commit_unittest.cpp
@@ -1,9 +1,8 @@
-#include "bmc_update_mock.hpp"
 #include "data_mock.hpp"
 #include "firmware_handler.hpp"
 #include "image_mock.hpp"
+#include "triggerable_mock.hpp"
 #include "util.hpp"
-#include "verification_mock.hpp"
 
 #include <memory>
 #include <vector>
@@ -46,11 +45,11 @@
      */
 
     /* Verify it doesn't get called by using StrictMock. */
-    std::unique_ptr<VerificationInterface> verifyMock =
-        std::make_unique<StrictMock<VerificationMock>>();
+    std::unique_ptr<TriggerableActionInterface> verifyMock =
+        std::make_unique<StrictMock<TriggerMock>>();
 
     auto handler = FirmwareBlobHandler::CreateFirmwareBlobHandler(
-        blobs, data, std::move(verifyMock), CreateUpdateMock());
+        blobs, data, std::move(verifyMock), CreateTriggerMock());
 
     EXPECT_CALL(imageMock2, open("asdf")).WillOnce(Return(true));
 
@@ -68,11 +67,11 @@
      */
 
     /* Verify it doesn't get called by using StrictMock. */
-    std::unique_ptr<VerificationInterface> verifyMock =
-        std::make_unique<StrictMock<VerificationMock>>();
+    std::unique_ptr<TriggerableActionInterface> verifyMock =
+        std::make_unique<StrictMock<TriggerMock>>();
 
     auto handler = FirmwareBlobHandler::CreateFirmwareBlobHandler(
-        blobs, data, std::move(verifyMock), CreateUpdateMock());
+        blobs, data, std::move(verifyMock), CreateTriggerMock());
 
     EXPECT_CALL(imageMock1, open(StrEq(hashBlobId))).WillOnce(Return(true));
 
diff --git a/test/firmware_createhandler_unittest.cpp b/test/firmware_createhandler_unittest.cpp
index 3bc52fe..dc6d968 100644
--- a/test/firmware_createhandler_unittest.cpp
+++ b/test/firmware_createhandler_unittest.cpp
@@ -1,9 +1,8 @@
-#include "bmc_update_mock.hpp"
 #include "data_mock.hpp"
 #include "firmware_handler.hpp"
 #include "image_mock.hpp"
+#include "triggerable_mock.hpp"
 #include "util.hpp"
-#include "verification_mock.hpp"
 
 #include <gtest/gtest.h>
 
@@ -32,7 +31,7 @@
     };
 
     auto handler = FirmwareBlobHandler::CreateFirmwareBlobHandler(
-        blobs, data, CreateVerifyMock(), CreateUpdateMock());
+        blobs, data, CreateTriggerMock(), CreateTriggerMock());
 
     //    EXPECT_EQ(handler, nullptr);
     EXPECT_FALSE(handler == nullptr);
diff --git a/test/firmware_delete_unittest.cpp b/test/firmware_delete_unittest.cpp
index ff2d7b3..058295d 100644
--- a/test/firmware_delete_unittest.cpp
+++ b/test/firmware_delete_unittest.cpp
@@ -1,10 +1,9 @@
-#include "bmc_update_mock.hpp"
 #include "data_mock.hpp"
 #include "firmware_handler.hpp"
 #include "firmware_unittest.hpp"
 #include "image_mock.hpp"
+#include "triggerable_mock.hpp"
 #include "util.hpp"
-#include "verification_mock.hpp"
 
 #include <vector>
 
diff --git a/test/firmware_handler_unittest.cpp b/test/firmware_handler_unittest.cpp
index e2ef7f4..a5d60f5 100644
--- a/test/firmware_handler_unittest.cpp
+++ b/test/firmware_handler_unittest.cpp
@@ -1,8 +1,7 @@
-#include "bmc_update_mock.hpp"
 #include "firmware_handler.hpp"
 #include "image_mock.hpp"
+#include "triggerable_mock.hpp"
 #include "util.hpp"
-#include "verification_mock.hpp"
 
 #include <algorithm>
 #include <vector>
@@ -23,7 +22,7 @@
     };
 
     auto handler = FirmwareBlobHandler::CreateFirmwareBlobHandler(
-        {}, data, CreateVerifyMock(), CreateUpdateMock());
+        {}, data, CreateTriggerMock(), CreateTriggerMock());
     EXPECT_EQ(handler, nullptr);
 }
 TEST(FirmwareHandlerTest, CreateEmptyDataHandlerListFails)
@@ -36,7 +35,7 @@
     };
 
     auto handler = FirmwareBlobHandler::CreateFirmwareBlobHandler(
-        blobs, {}, CreateVerifyMock(), CreateUpdateMock());
+        blobs, {}, CreateTriggerMock(), CreateTriggerMock());
     EXPECT_EQ(handler, nullptr);
 }
 TEST(FirmwareHandlerTest, VerifyHashRequiredForHappiness)
@@ -52,13 +51,13 @@
     };
 
     auto handler = FirmwareBlobHandler::CreateFirmwareBlobHandler(
-        blobs, data, CreateVerifyMock(), CreateUpdateMock());
+        blobs, data, CreateTriggerMock(), CreateTriggerMock());
     EXPECT_EQ(handler, nullptr);
 
     blobs.push_back({hashBlobId, &imageMock});
 
     handler = FirmwareBlobHandler::CreateFirmwareBlobHandler(
-        blobs, data, CreateVerifyMock(), CreateUpdateMock());
+        blobs, data, CreateTriggerMock(), CreateTriggerMock());
     auto result = handler->getBlobIds();
     std::vector<std::string> expectedBlobs = {"asdf", hashBlobId};
     EXPECT_THAT(result, UnorderedElementsAreArray(expectedBlobs));
diff --git a/test/firmware_open_unittest.cpp b/test/firmware_open_unittest.cpp
index 8190a47..7df0743 100644
--- a/test/firmware_open_unittest.cpp
+++ b/test/firmware_open_unittest.cpp
@@ -2,8 +2,8 @@
 #include "firmware_handler.hpp"
 #include "firmware_unittest.hpp"
 #include "image_mock.hpp"
+#include "triggerable_mock.hpp"
 #include "util.hpp"
-#include "verification_mock.hpp"
 
 #include <memory>
 #include <vector>
diff --git a/test/firmware_sessionstat_unittest.cpp b/test/firmware_sessionstat_unittest.cpp
index a484716..d2d1896 100644
--- a/test/firmware_sessionstat_unittest.cpp
+++ b/test/firmware_sessionstat_unittest.cpp
@@ -2,8 +2,8 @@
 #include "firmware_handler.hpp"
 #include "firmware_unittest.hpp"
 #include "image_mock.hpp"
+#include "triggerable_mock.hpp"
 #include "util.hpp"
-#include "verification_mock.hpp"
 
 #include <vector>
 
diff --git a/test/firmware_stat_unittest.cpp b/test/firmware_stat_unittest.cpp
index 1960c44..4efae94 100644
--- a/test/firmware_stat_unittest.cpp
+++ b/test/firmware_stat_unittest.cpp
@@ -1,8 +1,7 @@
-#include "bmc_update_mock.hpp"
 #include "firmware_handler.hpp"
 #include "image_mock.hpp"
+#include "triggerable_mock.hpp"
 #include "util.hpp"
-#include "verification_mock.hpp"
 
 #include <vector>
 
@@ -30,7 +29,7 @@
     };
 
     auto handler = FirmwareBlobHandler::CreateFirmwareBlobHandler(
-        blobs, data, CreateVerifyMock(), CreateUpdateMock());
+        blobs, data, CreateTriggerMock(), CreateTriggerMock());
 
     blobs::BlobMeta meta;
     EXPECT_TRUE(handler->stat("asdf", &meta));
diff --git a/test/firmware_state_updatecompleted_unittest.cpp b/test/firmware_state_updatecompleted_unittest.cpp
index 324a307..625e075 100644
--- a/test/firmware_state_updatecompleted_unittest.cpp
+++ b/test/firmware_state_updatecompleted_unittest.cpp
@@ -162,7 +162,7 @@
 {
     getToUpdateCompleted(ActionStatus::success);
 
-    EXPECT_CALL(*updateMockPtr, triggerUpdate()).Times(0);
+    EXPECT_CALL(*updateMockPtr, trigger()).Times(0);
     EXPECT_FALSE(handler->commit(session, {}));
 }
 
@@ -171,7 +171,7 @@
 {
     getToUpdateCompleted(ActionStatus::failed);
 
-    EXPECT_CALL(*updateMockPtr, triggerUpdate()).Times(0);
+    EXPECT_CALL(*updateMockPtr, trigger()).Times(0);
     EXPECT_FALSE(handler->commit(session, {}));
 }
 
diff --git a/test/firmware_state_updatepending_unittest.cpp b/test/firmware_state_updatepending_unittest.cpp
index 00bdc2a..31c88e9 100644
--- a/test/firmware_state_updatepending_unittest.cpp
+++ b/test/firmware_state_updatepending_unittest.cpp
@@ -215,7 +215,7 @@
     EXPECT_TRUE(handler->open(session, flags, updateBlobId));
     expectedState(FirmwareBlobHandler::UpdateState::updatePending);
 
-    EXPECT_CALL(*updateMockPtr, triggerUpdate()).WillOnce(Return(true));
+    EXPECT_CALL(*updateMockPtr, trigger()).WillOnce(Return(true));
 
     EXPECT_TRUE(handler->commit(session, {}));
     expectedState(FirmwareBlobHandler::UpdateState::updateStarted);
@@ -228,7 +228,7 @@
     EXPECT_TRUE(handler->open(session, flags, updateBlobId));
     expectedState(FirmwareBlobHandler::UpdateState::updatePending);
 
-    EXPECT_CALL(*updateMockPtr, triggerUpdate()).WillOnce(Return(false));
+    EXPECT_CALL(*updateMockPtr, trigger()).WillOnce(Return(false));
 
     EXPECT_FALSE(handler->commit(session, {}));
     expectedState(FirmwareBlobHandler::UpdateState::updatePending);
diff --git a/test/firmware_state_updatestarted_unittest.cpp b/test/firmware_state_updatestarted_unittest.cpp
index 6b55b4e..420d7a7 100644
--- a/test/firmware_state_updatestarted_unittest.cpp
+++ b/test/firmware_state_updatestarted_unittest.cpp
@@ -148,7 +148,7 @@
        CallingCommitShouldReturnTrueAndHaveNoEffect)
 {
     getToUpdateStarted();
-    EXPECT_CALL(*updateMockPtr, triggerUpdate()).Times(0);
+    EXPECT_CALL(*updateMockPtr, trigger()).Times(0);
 
     EXPECT_TRUE(handler->commit(session, {}));
     expectedState(FirmwareBlobHandler::UpdateState::updateStarted);
diff --git a/test/firmware_state_verificationcompleted_unittest.cpp b/test/firmware_state_verificationcompleted_unittest.cpp
index 90338f0..d9b4e70 100644
--- a/test/firmware_state_verificationcompleted_unittest.cpp
+++ b/test/firmware_state_verificationcompleted_unittest.cpp
@@ -251,7 +251,7 @@
      * let you try-again.
      */
     getToVerificationCompleted(ActionStatus::success);
-    EXPECT_CALL(*verifyMockPtr, triggerVerification()).Times(0);
+    EXPECT_CALL(*verifyMockPtr, trigger()).Times(0);
 
     EXPECT_FALSE(handler->commit(session, {}));
 }
@@ -260,7 +260,7 @@
        CommitOnVerifyBlobAfterFailureReturnsFailure)
 {
     getToVerificationCompleted(ActionStatus::failed);
-    EXPECT_CALL(*verifyMockPtr, triggerVerification()).Times(0);
+    EXPECT_CALL(*verifyMockPtr, trigger()).Times(0);
 
     EXPECT_FALSE(handler->commit(session, {}));
 }
diff --git a/test/firmware_state_verificationpending_unittest.cpp b/test/firmware_state_verificationpending_unittest.cpp
index d22b887..b7c1bfc 100644
--- a/test/firmware_state_verificationpending_unittest.cpp
+++ b/test/firmware_state_verificationpending_unittest.cpp
@@ -192,7 +192,7 @@
 {
     getToVerificationPending(staticLayoutBlobId);
     EXPECT_TRUE(handler->open(session, flags, verifyBlobId));
-    EXPECT_CALL(*verifyMockPtr, triggerVerification()).WillOnce(Return(true));
+    EXPECT_CALL(*verifyMockPtr, trigger()).WillOnce(Return(true));
 
     EXPECT_TRUE(handler->commit(session, {}));
     expectedState(FirmwareBlobHandler::UpdateState::verificationStarted);
@@ -209,7 +209,7 @@
      */
     getToVerificationPending(staticLayoutBlobId);
     EXPECT_TRUE(handler->open(session, flags, verifyBlobId));
-    EXPECT_CALL(*verifyMockPtr, triggerVerification()).Times(0);
+    EXPECT_CALL(*verifyMockPtr, trigger()).Times(0);
     EXPECT_CALL(*verifyMockPtr, status()).Times(0);
 
     blobs::BlobMeta meta, expectedMeta = {};
diff --git a/test/firmware_unittest.hpp b/test/firmware_unittest.hpp
index 11d49bf..a79cd4f 100644
--- a/test/firmware_unittest.hpp
+++ b/test/firmware_unittest.hpp
@@ -1,10 +1,9 @@
 #pragma once
 
-#include "bmc_update_mock.hpp"
 #include "data_mock.hpp"
 #include "firmware_handler.hpp"
 #include "image_mock.hpp"
-#include "verification_mock.hpp"
+#include "triggerable_mock.hpp"
 
 #include <memory>
 #include <vector>
@@ -29,13 +28,13 @@
             {staticLayoutBlobId, &imageMock},
         };
 
-        std::unique_ptr<VerificationInterface> verifyMock =
-            std::make_unique<VerificationMock>();
-        verifyMockPtr = reinterpret_cast<VerificationMock*>(verifyMock.get());
+        std::unique_ptr<TriggerableActionInterface> verifyMock =
+            std::make_unique<TriggerMock>();
+        verifyMockPtr = reinterpret_cast<TriggerMock*>(verifyMock.get());
 
-        std::unique_ptr<UpdateInterface> updateMock =
-            std::make_unique<UpdateMock>();
-        updateMockPtr = reinterpret_cast<UpdateMock*>(updateMock.get());
+        std::unique_ptr<TriggerableActionInterface> updateMock =
+            std::make_unique<TriggerMock>();
+        updateMockPtr = reinterpret_cast<TriggerMock*>(updateMock.get());
 
         handler = FirmwareBlobHandler::CreateFirmwareBlobHandler(
             blobs, data, std::move(verifyMock), std::move(updateMock));
@@ -68,8 +67,7 @@
         getToVerificationPending(blobId);
 
         EXPECT_TRUE(handler->open(session, flags, verifyBlobId));
-        EXPECT_CALL(*verifyMockPtr, triggerVerification())
-            .WillOnce(Return(true));
+        EXPECT_CALL(*verifyMockPtr, trigger()).WillOnce(Return(true));
 
         EXPECT_TRUE(handler->commit(session, {}));
         expectedState(FirmwareBlobHandler::UpdateState::verificationStarted);
@@ -98,7 +96,7 @@
         getToUpdatePending();
         EXPECT_TRUE(handler->open(session, flags, updateBlobId));
 
-        EXPECT_CALL(*updateMockPtr, triggerUpdate()).WillOnce(Return(true));
+        EXPECT_CALL(*updateMockPtr, trigger()).WillOnce(Return(true));
         EXPECT_TRUE(handler->commit(session, {}));
         expectedState(FirmwareBlobHandler::UpdateState::updateStarted);
     }
@@ -118,8 +116,8 @@
     std::vector<DataHandlerPack> data = {
         {FirmwareBlobHandler::UpdateFlags::ipmi, nullptr}};
     std::unique_ptr<blobs::GenericBlobInterface> handler;
-    VerificationMock* verifyMockPtr;
-    UpdateMock* updateMockPtr;
+    TriggerMock* verifyMockPtr;
+    TriggerMock* updateMockPtr;
 
     std::uint16_t session = 1;
     std::uint16_t flags =
@@ -142,7 +140,7 @@
             {"asdf", &imageMock},
         };
         handler = FirmwareBlobHandler::CreateFirmwareBlobHandler(
-            blobs, data, CreateVerifyMock(), CreateUpdateMock());
+            blobs, data, CreateTriggerMock(), CreateTriggerMock());
     }
 };
 
@@ -166,7 +164,7 @@
             {FirmwareBlobHandler::UpdateFlags::lpc, &dataMock},
         };
         handler = FirmwareBlobHandler::CreateFirmwareBlobHandler(
-            blobs, data, CreateVerifyMock(), CreateUpdateMock());
+            blobs, data, CreateTriggerMock(), CreateTriggerMock());
     }
 };
 
diff --git a/test/firmware_write_unittest.cpp b/test/firmware_write_unittest.cpp
index f4f78fc..d74f3c8 100644
--- a/test/firmware_write_unittest.cpp
+++ b/test/firmware_write_unittest.cpp
@@ -2,8 +2,8 @@
 #include "firmware_handler.hpp"
 #include "firmware_unittest.hpp"
 #include "image_mock.hpp"
+#include "triggerable_mock.hpp"
 #include "util.hpp"
-#include "verification_mock.hpp"
 
 #include <cstdint>
 #include <cstring>
diff --git a/test/firmware_writemeta_unittest.cpp b/test/firmware_writemeta_unittest.cpp
index e7d8463..491d669 100644
--- a/test/firmware_writemeta_unittest.cpp
+++ b/test/firmware_writemeta_unittest.cpp
@@ -2,8 +2,8 @@
 #include "firmware_handler.hpp"
 #include "firmware_unittest.hpp"
 #include "image_mock.hpp"
+#include "triggerable_mock.hpp"
 #include "util.hpp"
-#include "verification_mock.hpp"
 
 #include <memory>
 #include <vector>
diff --git a/test/triggerable_mock.hpp b/test/triggerable_mock.hpp
new file mode 100644
index 0000000..c485d8e
--- /dev/null
+++ b/test/triggerable_mock.hpp
@@ -0,0 +1,24 @@
+#pragma once
+
+#include "status.hpp"
+
+#include <gtest/gtest.h>
+
+namespace ipmi_flash
+{
+// TriggerableActionInterface
+
+class TriggerMock : public TriggerableActionInterface
+{
+  public:
+    MOCK_METHOD0(trigger, bool());
+    MOCK_METHOD0(abort, void());
+    MOCK_METHOD0(status, ActionStatus());
+};
+
+std::unique_ptr<TriggerableActionInterface> CreateTriggerMock()
+{
+    return std::make_unique<TriggerMock>();
+}
+
+} // namespace ipmi_flash
diff --git a/test/verification_mock.hpp b/test/verification_mock.hpp
deleted file mode 100644
index 728411b..0000000
--- a/test/verification_mock.hpp
+++ /dev/null
@@ -1,27 +0,0 @@
-#pragma once
-
-#include "status.hpp"
-#include "verify.hpp"
-
-#include <memory>
-#include <vector>
-
-#include <gtest/gtest.h>
-
-namespace ipmi_flash
-{
-
-class VerificationMock : public VerificationInterface
-{
-  public:
-    MOCK_METHOD0(triggerVerification, bool());
-    MOCK_METHOD0(abortVerification, void());
-    MOCK_METHOD0(status, ActionStatus());
-};
-
-std::unique_ptr<VerificationInterface> CreateVerifyMock()
-{
-    return std::make_unique<VerificationMock>();
-}
-
-} // namespace ipmi_flash
