diff --git a/sim/src/image.rs b/sim/src/image.rs
index 90d3a77..becd2c4 100644
--- a/sim/src/image.rs
+++ b/sim/src/image.rs
@@ -155,7 +155,7 @@
         }
     }
 
-    fn make_image_with_permanent(self, permanent: bool) -> Images {
+    pub fn make_image(self, permanent: bool) -> Images {
         let mut images = self.make_no_upgrade_image();
         for image in &images.images {
             mark_upgrade(&mut images.flash, &image.slots[1]);
@@ -173,16 +173,6 @@
         images
     }
 
-    /// Construct an `Images` for normal testing with perm upgrade.
-    pub fn make_image(self) -> Images {
-        self.make_image_with_permanent(true)
-    }
-
-    /// Construct an `Images` for normal testing with test upgrade.
-    pub fn make_non_permanent_image(self) -> Images {
-        self.make_image_with_permanent(false)
-    }
-
     pub fn make_bad_secondary_slot_image(self) -> Images {
         let mut bad_flash = self.flash;
         let images = self.slots.into_iter().map(|slots| {
@@ -390,10 +380,6 @@
         fails > 0
     }
 
-    pub fn run_perm_with_random_fails_5(&self) -> bool {
-        self.run_perm_with_random_fails(5)
-    }
-
     pub fn run_perm_with_random_fails(&self, total_fails: usize) -> bool {
         let mut fails = 0;
         let total_flash_ops = self.total_count.unwrap();
diff --git a/sim/src/lib.rs b/sim/src/lib.rs
index 1778713..1ed75dd 100644
--- a/sim/src/lib.rs
+++ b/sim/src/lib.rs
@@ -182,7 +182,7 @@
         let images = run.clone().make_no_upgrade_image();
         failed |= images.run_norevert_newimage();
 
-        let images = run.make_image();
+        let images = run.make_image(true);
 
         failed |= images.run_basic_revert();
         failed |= images.run_revert_with_fails();
diff --git a/sim/tests/core.rs b/sim/tests/core.rs
index 3253ddf..883ed43 100644
--- a/sim/tests/core.rs
+++ b/sim/tests/core.rs
@@ -5,25 +5,25 @@
 use bootsim::{ImagesBuilder, testlog};
 
 macro_rules! sim_test {
-    ($name:ident, $maker:ident, $test:ident) => {
+    ($name:ident, $maker:ident($($margs:expr),*), $test:ident($($targs:expr),*)) => {
         #[test]
         fn $name() {
             testlog::setup();
 
             ImagesBuilder::each_device(|r| {
-                let image = r.$maker();
-                assert!(!image.$test());
+                let image = r.$maker($($margs),*);
+                assert!(!image.$test($($targs),*));
             });
         }
     };
 }
 
-sim_test!(bad_secondary_slot, make_bad_secondary_slot_image, run_signfail_upgrade);
-sim_test!(norevert_newimage, make_no_upgrade_image, run_norevert_newimage);
-sim_test!(basic_revert, make_image, run_basic_revert);
-sim_test!(revert_with_fails, make_non_permanent_image, run_revert_with_fails);
-sim_test!(perm_with_fails, make_image, run_perm_with_fails);
-sim_test!(perm_with_random_fails, make_image, run_perm_with_random_fails_5);
-sim_test!(norevert, make_image, run_norevert);
-sim_test!(status_write_fails_complete, make_image, run_with_status_fails_complete);
-sim_test!(status_write_fails_with_reset, make_image, run_with_status_fails_with_reset);
+sim_test!(bad_secondary_slot, make_bad_secondary_slot_image(), run_signfail_upgrade());
+sim_test!(norevert_newimage, make_no_upgrade_image(), run_norevert_newimage());
+sim_test!(basic_revert, make_image(true), run_basic_revert());
+sim_test!(revert_with_fails, make_image(false), run_revert_with_fails());
+sim_test!(perm_with_fails, make_image(true), run_perm_with_fails());
+sim_test!(perm_with_random_fails, make_image(true), run_perm_with_random_fails(5));
+sim_test!(norevert, make_image(true), run_norevert());
+sim_test!(status_write_fails_complete, make_image(true), run_with_status_fails_complete());
+sim_test!(status_write_fails_with_reset, make_image(true), run_with_status_fails_with_reset());
