diff --git a/firmware_handler.cpp b/firmware_handler.cpp
index e879529..4967536 100644
--- a/firmware_handler.cpp
+++ b/firmware_handler.cpp
@@ -233,12 +233,12 @@
         {
             if (item->second->activePath == verifyBlobId)
             {
-                state = UpdateState::verificationCompleted;
+                changeState(UpdateState::verificationCompleted);
             }
             else
             {
                 /* item->second->activePath == updateBlobId */
-                state = UpdateState::updateCompleted;
+                changeState(UpdateState::updateCompleted);
             }
 
             item->second->flags &= ~blobs::StateFlags::committing;
@@ -472,7 +472,7 @@
     addBlobId(*active);
     removeBlobId(verifyBlobId);
 
-    state = UpdateState::uploadInProgress;
+    changeState(UpdateState::uploadInProgress);
     fileOpen = true;
 
     return true;
@@ -637,7 +637,7 @@
     {
         case UpdateState::uploadInProgress:
             /* They are closing a data pathway (image, tarball, hash). */
-            state = UpdateState::verificationPending;
+            changeState(UpdateState::verificationPending);
 
             /* Add verify blob ID now that we can expect it. */
             addBlobId(verifyBlobId);
@@ -656,7 +656,7 @@
         case UpdateState::verificationCompleted:
             if (lastVerificationStatus == ActionStatus::success)
             {
-                state = UpdateState::updatePending;
+                changeState(UpdateState::updatePending);
                 addBlobId(updateBlobId);
                 removeBlobId(verifyBlobId);
             }
@@ -709,6 +709,11 @@
     return true;
 }
 
+void FirmwareBlobHandler::changeState(UpdateState next)
+{
+    state = next;
+}
+
 bool FirmwareBlobHandler::expire(uint16_t session)
 {
     return false;
@@ -735,7 +740,7 @@
     removeBlobId(activeImageBlobId);
     removeBlobId(activeHashBlobId);
 
-    state = UpdateState::notYetStarted;
+    changeState(UpdateState::notYetStarted);
 }
 
 void FirmwareBlobHandler::abortVerification()
@@ -748,7 +753,7 @@
     bool result = verification->trigger();
     if (result)
     {
-        state = UpdateState::verificationStarted;
+        changeState(UpdateState::verificationStarted);
     }
 
     return result;
@@ -764,7 +769,7 @@
     bool result = update->trigger();
     if (result)
     {
-        state = UpdateState::updateStarted;
+        changeState(UpdateState::updateStarted);
     }
 
     return result;
diff --git a/firmware_handler.hpp b/firmware_handler.hpp
index 0d86ef0..de37e20 100644
--- a/firmware_handler.hpp
+++ b/firmware_handler.hpp
@@ -167,6 +167,9 @@
         return state;
     };
 
+    /** Provide for any state change triggers in convenience handler. */
+    void changeState(UpdateState next);
+
   private:
     void addBlobId(const std::string& blob)
     {
