diff --git a/firmware_handler.cpp b/firmware_handler.cpp
index 56ad3a2..12147a3 100644
--- a/firmware_handler.cpp
+++ b/firmware_handler.cpp
@@ -637,6 +637,10 @@
     {
         switch (state)
         {
+            case UpdateState::verificationPending:
+                /* They haven't triggered, therefore closing is uninteresting.
+                 */
+                break;
             case UpdateState::verificationStarted:
                 /* TODO: If they close this blob before verification finishes,
                  * that's an abort.
@@ -652,7 +656,6 @@
                 else
                 {
                     /* TODO: Verification failed, what now? */
-                    state = UpdateState::notYetStarted;
                 }
                 break;
             default:
@@ -664,7 +667,29 @@
     }
     else if (item->second->activePath == updateBlobId)
     {
-        /* nothing interesting. */
+        switch (state)
+        {
+            case UpdateState::updatePending:
+                /* They haven't triggered the update, therefore this is
+                 * uninteresting. */
+                break;
+            case UpdateState::updateStarted:
+                /* TODO: handle closing while update is running!. */
+                break;
+            case UpdateState::updateCompleted:
+                if (lastUpdateStatus == ActionStatus::failed)
+                {
+                    /* TODO: lOG something? */
+                }
+
+                state = UpdateState::notYetStarted;
+                removeBlobId(updateBlobId);
+                removeBlobId(activeImageBlobId);
+                removeBlobId(activeHashBlobId);
+                break;
+            default:
+                break;
+        }
     }
     else
     {
diff --git a/test/firmware_state_updatecompleted_unittest.cpp b/test/firmware_state_updatecompleted_unittest.cpp
index b86320b..3424e89 100644
--- a/test/firmware_state_updatecompleted_unittest.cpp
+++ b/test/firmware_state_updatecompleted_unittest.cpp
@@ -202,9 +202,38 @@
 }
 
 /*
+ * close(session) - closes everything out and returns to state not-yet-started.
+ * It doesn't go and clean out any update artifacts that may be present on the
+ * system.  It's up to the update implementation to deal with this before
+ * marking complete.
+ */
+TEST_F(FirmwareHandlerUpdateCompletedTest,
+       ClosingOnUpdateBlobIdAfterSuccessReturnsToNotYetStartedAndCleansBlobList)
+{
+    getToUpdateCompleted(ActionStatus::success);
+
+    handler->close(session);
+    expectedState(FirmwareBlobHandler::UpdateState::notYetStarted);
+
+    std::vector<std::string> expected = {hashBlobId, staticLayoutBlobId};
+    EXPECT_THAT(handler->getBlobIds(), UnorderedElementsAreArray(expected));
+}
+
+TEST_F(FirmwareHandlerUpdateCompletedTest,
+       ClosingOnUpdateBlobIdAfterFailureReturnsToNotYetStartedAndCleansBlobList)
+{
+    getToUpdateCompleted(ActionStatus::failed);
+
+    handler->close(session);
+    expectedState(FirmwareBlobHandler::UpdateState::notYetStarted);
+
+    std::vector<std::string> expected = {hashBlobId, staticLayoutBlobId};
+    EXPECT_THAT(handler->getBlobIds(), UnorderedElementsAreArray(expected));
+}
+
+/*
  * There are the following calls (parameters may vary):
- * deleteBlob(blob)
- * close(session)
+ * TODO: deleteBlob(blob)
  */
 
 } // namespace
