diff --git a/item_updater.cpp b/item_updater.cpp
index 7692293..5ef6bd0 100644
--- a/item_updater.cpp
+++ b/item_updater.cpp
@@ -318,28 +318,43 @@
         bus.call_noreply(method);
 }
 
-void ItemUpdater::removePreservedPartition()
+void ItemUpdater::reset()
 {
-    // Remove the preserved partition.
+    for (const auto& it : activations)
+    {
+        auto serviceFile = "obmc-flash-bios-ubiclear@pnor-rw-" + it.first +
+                ".service";
+
+        // Clear the read-write partitions.
+        auto method = bus.new_method_call(
+                SYSTEMD_BUSNAME,
+                SYSTEMD_PATH,
+                SYSTEMD_INTERFACE,
+                "StartUnit");
+        method.append(serviceFile, "replace");
+        auto reply = bus.call(method);
+
+        if (reply.is_method_error())
+        {
+            elog<InternalFailure>();
+        }
+
+        removeFile(it.first);
+    }
+    // Clear the preserved partition.
     auto method = bus.new_method_call(
             SYSTEMD_BUSNAME,
             SYSTEMD_PATH,
             SYSTEMD_INTERFACE,
             "StartUnit");
-    method.append("obmc-flash-bios-ubiumount-prsv.service", "replace");
-    bus.call_noreply(method);
+    method.append("obmc-flash-bios-ubiclear@pnor-prsv.service", "replace");
+    auto reply = bus.call(method);
 
-    return;
-}
-
-void ItemUpdater::reset()
-{
-    for (const auto& it : activations)
+    if (reply.is_method_error())
     {
-        removeReadWritePartition(it.first);
-        removeFile(it.first);
+        elog<InternalFailure>();
     }
-    removePreservedPartition();
+
     return;
 }
 
