diff --git a/firmware_handler.cpp b/firmware_handler.cpp
index 4717e95..3f255ac 100644
--- a/firmware_handler.cpp
+++ b/firmware_handler.cpp
@@ -291,7 +291,7 @@
 
     std::vector<std::uint8_t> bytes;
 
-    if (item->second->flags & FirmwareUpdateFlags::ipmi)
+    if (item->second->flags & UpdateFlags::ipmi)
     {
         bytes = data;
     }
@@ -330,7 +330,7 @@
         return false;
     }
 
-    if (item->second->flags & FirmwareUpdateFlags::ipmi)
+    if (item->second->flags & UpdateFlags::ipmi)
     {
         return false;
     }
diff --git a/firmware_handler.hpp b/firmware_handler.hpp
index 8cb42cf..e1c3f85 100644
--- a/firmware_handler.hpp
+++ b/firmware_handler.hpp
@@ -41,7 +41,7 @@
 class FirmwareBlobHandler : public GenericBlobInterface
 {
   public:
-    enum FirmwareUpdateFlags : std::uint16_t
+    enum UpdateFlags : std::uint16_t
     {
         ipmi = (1 << 8), /* Expect to send contents over IPMI BlockTransfer. */
         p2a = (1 << 9),  /* Expect to send contents over P2A bridge. */
diff --git a/main.cpp b/main.cpp
index 44b5836..5304c50 100644
--- a/main.cpp
+++ b/main.cpp
@@ -31,12 +31,12 @@
 };
 
 std::vector<DataHandlerPack> supportedTransports = {
-    {FirmwareBlobHandler::FirmwareUpdateFlags::ipmi, nullptr},
+    {FirmwareBlobHandler::UpdateFlags::ipmi, nullptr},
 #ifdef ENABLE_PCI_BRIDGE
-    {FirmwareBlobHandler::FirmwareUpdateFlags::p2a, &pciDataHandler},
+    {FirmwareBlobHandler::UpdateFlags::p2a, &pciDataHandler},
 #endif
 #ifdef ENABLE_LPC_BRIDGE
-    {FirmwareBlobHandler::FirmwareUpdateFlags::lpc, &lpcDataHandler},
+    {FirmwareBlobHandler::UpdateFlags::lpc, &lpcDataHandler},
 #endif
 };
 
diff --git a/test/firmware_canhandle_unittest.cpp b/test/firmware_canhandle_unittest.cpp
index ea7a8bf..5ad48a5 100644
--- a/test/firmware_canhandle_unittest.cpp
+++ b/test/firmware_canhandle_unittest.cpp
@@ -27,7 +27,7 @@
         {"bcdf", &imageMock},
     };
     std::vector<DataHandlerPack> data = {
-        {FirmwareBlobHandler::FirmwareUpdateFlags::ipmi, nullptr},
+        {FirmwareBlobHandler::UpdateFlags::ipmi, nullptr},
     };
 
     auto handler = FirmwareBlobHandler::CreateFirmwareBlobHandler(blobs, data);
diff --git a/test/firmware_handler_unittest.cpp b/test/firmware_handler_unittest.cpp
index b9bc191..f29668b 100644
--- a/test/firmware_handler_unittest.cpp
+++ b/test/firmware_handler_unittest.cpp
@@ -12,7 +12,7 @@
 TEST(FirmwareHandlerTest, CreateEmptyListVerifyFails)
 {
     std::vector<DataHandlerPack> data = {
-        {FirmwareBlobHandler::FirmwareUpdateFlags::ipmi, nullptr},
+        {FirmwareBlobHandler::UpdateFlags::ipmi, nullptr},
     };
 
     auto handler = FirmwareBlobHandler::CreateFirmwareBlobHandler({}, data);
@@ -39,7 +39,7 @@
         {"asdf", &imageMock},
     };
     std::vector<DataHandlerPack> data = {
-        {FirmwareBlobHandler::FirmwareUpdateFlags::ipmi, nullptr},
+        {FirmwareBlobHandler::UpdateFlags::ipmi, nullptr},
     };
 
     auto handler = FirmwareBlobHandler::CreateFirmwareBlobHandler(blobs, data);
diff --git a/test/firmware_open_unittest.cpp b/test/firmware_open_unittest.cpp
index 49d40a0..202c054 100644
--- a/test/firmware_open_unittest.cpp
+++ b/test/firmware_open_unittest.cpp
@@ -23,7 +23,7 @@
         {"asdf", &imageMock},
     };
     std::vector<DataHandlerPack> data = {
-        {FirmwareBlobHandler::FirmwareUpdateFlags::ipmi, nullptr},
+        {FirmwareBlobHandler::UpdateFlags::ipmi, nullptr},
     };
 
     auto handler = FirmwareBlobHandler::CreateFirmwareBlobHandler(blobs, data);
@@ -31,8 +31,7 @@
     EXPECT_CALL(imageMock, open("asdf")).WillOnce(Return(true));
 
     EXPECT_TRUE(handler->open(
-        0, OpenFlags::write | FirmwareBlobHandler::FirmwareUpdateFlags::ipmi,
-        "asdf"));
+        0, OpenFlags::write | FirmwareBlobHandler::UpdateFlags::ipmi, "asdf"));
 }
 
 TEST(FirmwareHandlerOpenTest, OpenWithEverythingValidImageHandlerFails)
@@ -47,7 +46,7 @@
         {"asdf", &imageMock},
     };
     std::vector<DataHandlerPack> data = {
-        {FirmwareBlobHandler::FirmwareUpdateFlags::ipmi, nullptr},
+        {FirmwareBlobHandler::UpdateFlags::ipmi, nullptr},
     };
 
     auto handler = FirmwareBlobHandler::CreateFirmwareBlobHandler(blobs, data);
@@ -55,8 +54,7 @@
     EXPECT_CALL(imageMock, open("asdf")).WillOnce(Return(false));
 
     EXPECT_FALSE(handler->open(
-        0, OpenFlags::write | FirmwareBlobHandler::FirmwareUpdateFlags::ipmi,
-        "asdf"));
+        0, OpenFlags::write | FirmwareBlobHandler::UpdateFlags::ipmi, "asdf"));
 }
 
 TEST(FirmwareHandlerOpenTest, OpenWithoutWriteFails)
@@ -70,13 +68,13 @@
         {"asdf", &imageMock},
     };
     std::vector<DataHandlerPack> data = {
-        {FirmwareBlobHandler::FirmwareUpdateFlags::ipmi, nullptr},
+        {FirmwareBlobHandler::UpdateFlags::ipmi, nullptr},
     };
 
     auto handler = FirmwareBlobHandler::CreateFirmwareBlobHandler(blobs, data);
 
-    EXPECT_FALSE(handler->open(
-        0, FirmwareBlobHandler::FirmwareUpdateFlags::ipmi, "asdf"));
+    EXPECT_FALSE(
+        handler->open(0, FirmwareBlobHandler::UpdateFlags::ipmi, "asdf"));
 }
 
 TEST(FirmwareHandlerOpenTest, OpenWithInvalidTransportBit)
@@ -90,13 +88,13 @@
         {"asdf", &imageMock},
     };
     std::vector<DataHandlerPack> data = {
-        {FirmwareBlobHandler::FirmwareUpdateFlags::ipmi, nullptr},
+        {FirmwareBlobHandler::UpdateFlags::ipmi, nullptr},
     };
 
     auto handler = FirmwareBlobHandler::CreateFirmwareBlobHandler(blobs, data);
 
-    EXPECT_FALSE(handler->open(0, FirmwareBlobHandler::FirmwareUpdateFlags::lpc,
-                               "asdf"));
+    EXPECT_FALSE(
+        handler->open(0, FirmwareBlobHandler::UpdateFlags::lpc, "asdf"));
 }
 
 TEST(FirmwareHandlerOpenTest, OpenWithInvalidImageBlobId)
@@ -110,14 +108,13 @@
         {"asdf", &imageMock},
     };
     std::vector<DataHandlerPack> data = {
-        {FirmwareBlobHandler::FirmwareUpdateFlags::ipmi, nullptr},
+        {FirmwareBlobHandler::UpdateFlags::ipmi, nullptr},
     };
 
     auto handler = FirmwareBlobHandler::CreateFirmwareBlobHandler(blobs, data);
 
     EXPECT_FALSE(handler->open(
-        0, OpenFlags::write | FirmwareBlobHandler::FirmwareUpdateFlags::ipmi,
-        "bcdf"));
+        0, OpenFlags::write | FirmwareBlobHandler::UpdateFlags::ipmi, "bcdf"));
 }
 
 /* TODO: The client sends a request during verification. */
diff --git a/test/firmware_stat_unittest.cpp b/test/firmware_stat_unittest.cpp
index 60225be..338e7bf 100644
--- a/test/firmware_stat_unittest.cpp
+++ b/test/firmware_stat_unittest.cpp
@@ -23,13 +23,13 @@
         {"asdf", &imageMock},
     };
     std::vector<DataHandlerPack> data = {
-        {FirmwareBlobHandler::FirmwareUpdateFlags::ipmi, nullptr},
+        {FirmwareBlobHandler::UpdateFlags::ipmi, nullptr},
     };
 
     auto handler = FirmwareBlobHandler::CreateFirmwareBlobHandler(blobs, data);
     struct BlobMeta meta;
     EXPECT_TRUE(handler->stat("asdf", &meta));
-    EXPECT_EQ(FirmwareBlobHandler::FirmwareUpdateFlags::ipmi, meta.blobState);
+    EXPECT_EQ(FirmwareBlobHandler::UpdateFlags::ipmi, meta.blobState);
 }
 
 } // namespace blobs
diff --git a/test/firmware_write_unittest.cpp b/test/firmware_write_unittest.cpp
index a53a32c..58cb5b2 100644
--- a/test/firmware_write_unittest.cpp
+++ b/test/firmware_write_unittest.cpp
@@ -24,7 +24,7 @@
     };
 
     std::vector<DataHandlerPack> data = {
-        {FirmwareBlobHandler::FirmwareUpdateFlags::ipmi, nullptr},
+        {FirmwareBlobHandler::UpdateFlags::ipmi, nullptr},
     };
 
     auto handler = FirmwareBlobHandler::CreateFirmwareBlobHandler(blobs, data);
@@ -32,8 +32,7 @@
     EXPECT_CALL(imageMock2, open("asdf")).WillOnce(Return(true));
 
     EXPECT_TRUE(handler->open(
-        0, OpenFlags::write | FirmwareBlobHandler::FirmwareUpdateFlags::ipmi,
-        "asdf"));
+        0, OpenFlags::write | FirmwareBlobHandler::UpdateFlags::ipmi, "asdf"));
 
     std::vector<std::uint8_t> bytes = {0xaa, 0x55};
 
@@ -54,8 +53,8 @@
     DataHandlerMock dataMock;
 
     std::vector<DataHandlerPack> data = {
-        {FirmwareBlobHandler::FirmwareUpdateFlags::ipmi, nullptr},
-        {FirmwareBlobHandler::FirmwareUpdateFlags::lpc, &dataMock},
+        {FirmwareBlobHandler::UpdateFlags::ipmi, nullptr},
+        {FirmwareBlobHandler::UpdateFlags::lpc, &dataMock},
     };
 
     auto handler = FirmwareBlobHandler::CreateFirmwareBlobHandler(blobs, data);
@@ -63,8 +62,7 @@
     EXPECT_CALL(imageMock2, open("asdf")).WillOnce(Return(true));
 
     EXPECT_TRUE(handler->open(
-        0, OpenFlags::write | FirmwareBlobHandler::FirmwareUpdateFlags::lpc,
-        "asdf"));
+        0, OpenFlags::write | FirmwareBlobHandler::UpdateFlags::lpc, "asdf"));
 
     struct ExtChunkHdr request;
     request.length = 4; /* number of bytes to read. */
@@ -93,8 +91,8 @@
     DataHandlerMock dataMock;
 
     std::vector<DataHandlerPack> data = {
-        {FirmwareBlobHandler::FirmwareUpdateFlags::ipmi, nullptr},
-        {FirmwareBlobHandler::FirmwareUpdateFlags::lpc, &dataMock},
+        {FirmwareBlobHandler::UpdateFlags::ipmi, nullptr},
+        {FirmwareBlobHandler::UpdateFlags::lpc, &dataMock},
     };
 
     auto handler = FirmwareBlobHandler::CreateFirmwareBlobHandler(blobs, data);
@@ -102,8 +100,7 @@
     EXPECT_CALL(imageMock2, open("asdf")).WillOnce(Return(true));
 
     EXPECT_TRUE(handler->open(
-        0, OpenFlags::write | FirmwareBlobHandler::FirmwareUpdateFlags::lpc,
-        "asdf"));
+        0, OpenFlags::write | FirmwareBlobHandler::UpdateFlags::lpc, "asdf"));
 
     struct ExtChunkHdr request;
     request.length = 4; /* number of bytes to read. */
diff --git a/test/firmware_writemeta_unittest.cpp b/test/firmware_writemeta_unittest.cpp
index 0a795c9..b2338c1 100644
--- a/test/firmware_writemeta_unittest.cpp
+++ b/test/firmware_writemeta_unittest.cpp
@@ -20,8 +20,8 @@
     DataHandlerMock dataMock;
 
     std::vector<DataHandlerPack> data = {
-        {FirmwareBlobHandler::FirmwareUpdateFlags::ipmi, nullptr},
-        {FirmwareBlobHandler::FirmwareUpdateFlags::lpc, &dataMock},
+        {FirmwareBlobHandler::UpdateFlags::ipmi, nullptr},
+        {FirmwareBlobHandler::UpdateFlags::lpc, &dataMock},
     };
 
     auto handler = FirmwareBlobHandler::CreateFirmwareBlobHandler(blobs, data);
@@ -29,8 +29,7 @@
     EXPECT_CALL(imageMock2, open("asdf")).WillOnce(Return(true));
 
     EXPECT_TRUE(handler->open(
-        0, OpenFlags::write | FirmwareBlobHandler::FirmwareUpdateFlags::ipmi,
-        "asdf"));
+        0, OpenFlags::write | FirmwareBlobHandler::UpdateFlags::ipmi, "asdf"));
 
     std::vector<std::uint8_t> bytes = {0xaa, 0x55};
 
@@ -48,8 +47,8 @@
     DataHandlerMock dataMock;
 
     std::vector<DataHandlerPack> data = {
-        {FirmwareBlobHandler::FirmwareUpdateFlags::ipmi, nullptr},
-        {FirmwareBlobHandler::FirmwareUpdateFlags::lpc, &dataMock},
+        {FirmwareBlobHandler::UpdateFlags::ipmi, nullptr},
+        {FirmwareBlobHandler::UpdateFlags::lpc, &dataMock},
     };
 
     auto handler = FirmwareBlobHandler::CreateFirmwareBlobHandler(blobs, data);
@@ -57,8 +56,7 @@
     EXPECT_CALL(imageMock2, open("asdf")).WillOnce(Return(true));
 
     EXPECT_TRUE(handler->open(
-        0, OpenFlags::write | FirmwareBlobHandler::FirmwareUpdateFlags::lpc,
-        "asdf"));
+        0, OpenFlags::write | FirmwareBlobHandler::UpdateFlags::lpc, "asdf"));
 
     std::vector<std::uint8_t> bytes = {0x01, 0x02, 0x03, 0x04};
 
