diff --git a/src/lib.rs b/src/lib.rs
index d7b3601..cbee4f6 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -279,6 +279,11 @@
     Ermine,
 }
 
+impl Default for RunMode {
+    fn default() -> Self {
+        RunMode::Normal
+    }
+}
 fn run_switches_to_mode(tiles: bool, run: bool, ermine: bool) -> RunMode {
     if tiles {
         RunMode::Tiles
@@ -299,7 +304,7 @@
     format!("fargo-story-{}", secs)
 }
 
-#[derive(Debug)]
+#[derive(Debug, Clone, Default)]
 pub struct RunCargoOptions {
     pub verbose: bool,
     pub release: bool,
@@ -314,115 +319,35 @@
 
 impl RunCargoOptions {
     pub fn new(verbose: bool, release: bool) -> RunCargoOptions {
-        RunCargoOptions {
-            verbose,
-            release,
-            nocapture: false,
-            run_mode: RunMode::Normal,
-            story_name: None,
-            mod_name: None,
-            disable_cross: false,
-            manifest_path: None,
-            cmx_path: None,
-        }
+        Self { verbose, release, ..Self::default() }
     }
 
     pub fn disable_cross(&self, disable_cross: bool) -> RunCargoOptions {
-        RunCargoOptions {
-            verbose: self.verbose,
-            release: self.release,
-            nocapture: self.nocapture,
-            run_mode: self.run_mode,
-            story_name: self.story_name.clone(),
-            mod_name: self.mod_name.clone(),
-            disable_cross,
-            manifest_path: self.manifest_path.clone(),
-            cmx_path: self.cmx_path.clone(),
-        }
+        Self { disable_cross, ..self.clone() }
     }
 
     pub fn release(&self, release: bool) -> RunCargoOptions {
-        RunCargoOptions {
-            verbose: self.verbose,
-            release: release,
-            nocapture: self.nocapture,
-            run_mode: self.run_mode,
-            story_name: self.story_name.clone(),
-            mod_name: self.mod_name.clone(),
-            disable_cross: self.disable_cross,
-            manifest_path: self.manifest_path.clone(),
-            cmx_path: self.cmx_path.clone(),
-        }
+        Self { release, ..self.clone() }
     }
 
     pub fn nocapture(&self, nocapture: bool) -> RunCargoOptions {
-        RunCargoOptions {
-            verbose: self.verbose,
-            release: self.release,
-            nocapture: nocapture,
-            run_mode: self.run_mode,
-            story_name: self.story_name.clone(),
-            mod_name: self.mod_name.clone(),
-            disable_cross: self.disable_cross,
-            manifest_path: self.manifest_path.clone(),
-            cmx_path: self.cmx_path.clone(),
-        }
+        Self { nocapture, ..self.clone() }
     }
 
     pub fn run_mode(&self, run_mode: RunMode) -> RunCargoOptions {
-        RunCargoOptions {
-            verbose: self.verbose,
-            release: self.release,
-            nocapture: self.nocapture,
-            run_mode: run_mode,
-            story_name: self.story_name.clone(),
-            mod_name: self.mod_name.clone(),
-            disable_cross: self.disable_cross,
-            manifest_path: self.manifest_path.clone(),
-            cmx_path: self.cmx_path.clone(),
-        }
+        Self { run_mode, ..self.clone() }
     }
 
     pub fn story_name(&self, story_name: &Option<&str>) -> RunCargoOptions {
-        RunCargoOptions {
-            verbose: self.verbose,
-            release: self.release,
-            nocapture: self.nocapture,
-            run_mode: self.run_mode,
-            story_name: story_name.map(|name| name.to_string()),
-            mod_name: self.mod_name.clone(),
-            disable_cross: self.disable_cross,
-            manifest_path: self.manifest_path.clone(),
-            cmx_path: self.cmx_path.clone(),
-        }
+        Self { story_name: story_name.map(|name| name.to_string()), ..self.clone() }
     }
 
     pub fn mod_name(&self, mod_name: &Option<&str>) -> RunCargoOptions {
-        RunCargoOptions {
-            verbose: self.verbose,
-            release: self.release,
-            nocapture: self.nocapture,
-            run_mode: self.run_mode,
-            story_name: self.story_name.clone(),
-            mod_name: mod_name.map(|name| name.to_string()),
-            disable_cross: self.disable_cross,
-            manifest_path: self.manifest_path.clone(),
-            cmx_path: self.cmx_path.clone(),
-        }
+        Self { mod_name: mod_name.map(|name| name.to_string()), ..self.clone() }
     }
 
     pub fn manifest_path(&self, manifest_path: Option<PathBuf>) -> RunCargoOptions {
-        RunCargoOptions {
-            verbose: self.verbose,
-            release: self.release,
-            nocapture: self.nocapture,
-            run_mode: self.run_mode,
-            story_name: self.story_name.clone(),
-            mod_name: self.mod_name.clone(),
-            disable_cross: self.disable_cross,
-            manifest_path: manifest_path,
-            cmx_path: self.cmx_path.clone(),
-        }
+        Self { manifest_path, ..self.clone() }
     }
 
     pub fn get_story_name(&self) -> String {
@@ -1165,14 +1090,8 @@
 
     let run_cargo_options = RunCargoOptions {
         verbose,
-        release: false,
-        nocapture: false,
-        run_mode: RunMode::Normal,
-        story_name: None,
-        mod_name: None,
-        disable_cross,
-        manifest_path: None,
         cmx_path: matches.value_of(CMX_PATH).map(|s| PathBuf::from(s)),
+        ..RunCargoOptions::default()
     };
 
     if verbose {
