diff --git a/Cargo.lock b/Cargo.lock
index f902d83..fc8cc27 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -107,6 +107,7 @@
  "serde 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)",
  "serde_derive 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)",
  "serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)",
+ "structopt 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
  "toml 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)",
  "uname 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
@@ -176,6 +177,14 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
 
 [[package]]
+name = "heck"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "unicode-segmentation 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
 name = "inotify"
 version = "0.6.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -310,6 +319,16 @@
 ]
 
 [[package]]
+name = "proc-macro-error"
+version = "0.2.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "proc-macro2 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)",
+ "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
+ "syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
 name = "proc-macro2"
 version = "0.4.30"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -318,6 +337,14 @@
 ]
 
 [[package]]
+name = "proc-macro2"
+version = "1.0.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
 name = "quote"
 version = "0.6.13"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -326,6 +353,14 @@
 ]
 
 [[package]]
+name = "quote"
+version = "1.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "proc-macro2 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
 name = "redox_syscall"
 version = "0.1.56"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -384,6 +419,27 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
 
 [[package]]
+name = "structopt"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "structopt-derive 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "structopt-derive"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "heck 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
+ "proc-macro-error 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "proc-macro2 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)",
+ "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
+ "syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
 name = "syn"
 version = "0.15.42"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -394,6 +450,16 @@
 ]
 
 [[package]]
+name = "syn"
+version = "1.0.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "proc-macro2 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)",
+ "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
+ "unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
 name = "synstructure"
 version = "0.10.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -429,6 +495,11 @@
 ]
 
 [[package]]
+name = "unicode-segmentation"
+version = "1.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
 name = "unicode-width"
 version = "0.1.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -439,6 +510,11 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
 
 [[package]]
+name = "unicode-xid"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
 name = "vec_map"
 version = "0.8.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -519,6 +595,7 @@
 "checksum fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82"
 "checksum fuchsia-zircon-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "43f3795b4bae048dc6123a6b972cadde2e676f9ded08aef6bb77f5f157684a82"
 "checksum fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7"
+"checksum heck 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "20564e78d53d2bb135c343b3f47714a56af2061f1c928fdb541dc7b9fdd94205"
 "checksum inotify 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "40b54539f3910d6f84fbf9a643efd6e3aa6e4f001426c0329576128255994718"
 "checksum inotify-sys 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "e74a1aa87c59aeff6ef2cc2fa62d41bc43f54952f55652656b18a02fd5e356c0"
 "checksum iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dbe6e417e7d0975db6512b90796e8ce223145ac4e33c377e4a42882a0e88bb08"
@@ -533,8 +610,11 @@
 "checksum miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8c1f2f3b1cf331de6896aabf6e9d55dca90356cc9960cca7eaaf408a355ae919"
 "checksum net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)" = "42550d9fb7b6684a6d404d9fa7250c2eb2646df731d1c06afc06dcee9e1bcf88"
 "checksum notify 4.0.12 (registry+https://github.com/rust-lang/crates.io-index)" = "3572d71f13ea8ed41867accd971fd564aa75934cf7a1fae03ddb8c74a8a49943"
+"checksum proc-macro-error 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "aeccfe4d5d8ea175d5f0e4a2ad0637e0f4121d63bd99d356fb1f39ab2e7c6097"
 "checksum proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)" = "cf3d2011ab5c909338f7887f4fc896d35932e29146c12c8d01da6b22a80ba759"
+"checksum proc-macro2 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "e98a83a9f9b331f54b924e68a66acb1bb35cb01fb0a23645139967abefb697e8"
 "checksum quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)" = "6ce23b6b870e8f94f81fb0a363d65d86675884b34a09043c81e5562f11c1f8e1"
+"checksum quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "053a8c8bcc71fcce321828dc897a98ab9760bef03a4fc36693c231e5b3216cfe"
 "checksum redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)" = "2439c63f3f6139d1b57529d16bc3b8bb855230c8efcc5d3a896c8bea7c3b1e84"
 "checksum rustc-demangle 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)" = "a7f4dccf6f4891ebcc0c39f9b6eb1a83b9bf5d747cb439ec6fba4f3b977038af"
 "checksum ryu 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c92464b447c0ee8c4fb3824ecc8383b81717b9f1e74ba2e72540aef7b9f82997"
@@ -544,13 +624,18 @@
 "checksum serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)" = "051c49229f282f7c6f3813f8286cc1e3323e8051823fce42c7ea80fe13521704"
 "checksum slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8"
 "checksum strsim 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a"
+"checksum structopt 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2ac9d6e93dd792b217bf89cda5c14566e3043960c6f9da890c2ba5d09d07804c"
+"checksum structopt-derive 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2ae9e5165d463a0dea76967d021f8d0f9316057bf5163aa2a4843790e842ff37"
 "checksum syn 0.15.42 (registry+https://github.com/rust-lang/crates.io-index)" = "eadc09306ca51a40555dd6fc2b415538e9e18bc9f870e47b1a524a79fe2dcf5e"
+"checksum syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "66850e97125af79138385e9b88339cbcd037e3f28ceab8c5ad98e64f0f1f80bf"
 "checksum synstructure 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)" = "02353edf96d6e4dc81aea2d8490a7e9db177bf8acb0e951c24940bf866cb313f"
 "checksum textwrap 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060"
 "checksum toml 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)" = "758664fc71a3a69038656bee8b6be6477d2a6c315a6b81f7081f591bffa4111f"
 "checksum uname 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b72f89f0ca32e4db1c04e2a72f5345d59796d4866a1ee0609084569f73683dc8"
+"checksum unicode-segmentation 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1967f4cdfc355b37fd76d2a954fb2ed3871034eb4f26d60537d88795cfc332a9"
 "checksum unicode-width 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "882386231c45df4700b275c7ff55b6f3698780a650026380e72dabe76fa46526"
 "checksum unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc"
+"checksum unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "826e7639553986605ec5979c7dd957c7895e93eabed50ab2ffa7f6128a75097c"
 "checksum vec_map 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "05c78687fb1a80548ae3250346c3db86a80a7cdd77bda190189f2d0a0987c81a"
 "checksum walkdir 2.2.9 (registry+https://github.com/rust-lang/crates.io-index)" = "9658c94fa8b940eab2250bd5a457f9c48b748420d71293b165c8cdbe2f55f71e"
 "checksum winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a"
diff --git a/Cargo.toml b/Cargo.toml
index 6c5f426..d07347e 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -13,6 +13,7 @@
 serde = "1.0"
 serde_derive = "1.0"
 serde_json = "1.0"
+structopt = "0.3"
 toml = "0.4"
 
 [[bin]]
diff --git a/src/bin/fargo.rs b/src/bin/fargo.rs
index 895fa0d..5ef2e18 100644
--- a/src/bin/fargo.rs
+++ b/src/bin/fargo.rs
@@ -1,10 +1,10 @@
 #![recursion_limit = "1024"]
 
-use fargo::run;
+use fargo::run2::run2;
 use itertools::Itertools;
 
 fn main() {
-    if let Err(ref e) = run() {
+    if let Err(ref e) = run2() {
         println!("error: {}", e.iter_chain().join(", "));
         ::std::process::exit(1);
     }
diff --git a/src/lib.rs b/src/lib.rs
index b9b74a9..9e2dd29 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -12,6 +12,7 @@
 mod cross;
 mod device;
 mod package;
+pub mod run2;
 mod sdk;
 mod utils;
 
diff --git a/src/run2.rs b/src/run2.rs
new file mode 100644
index 0000000..132f7e5
--- /dev/null
+++ b/src/run2.rs
@@ -0,0 +1,244 @@
+use crate::{
+    random_story_name, run_binary, run_program_on_target, run_switches_to_mode, FuchsiaConfig,
+    RunCargoOptions, TargetOptions, DEFAULT_MOD_NAME,
+};
+use failure::Error;
+use std::path::PathBuf;
+use structopt::StructOpt;
+
+#[derive(Debug, StructOpt)]
+enum FargoCommand {
+    /// Auto build and test in Fuchsia device or emulator
+    Autotest,
+    /// Build binary targeting Fuchsia device or emulator
+    Build,
+    /// Build rustc targeting Fuchsia
+    BuildRustc,
+    /// Run a cargo command for Fuchsia. Use -- to indicate that all following arguments should be
+    /// passed to cargo.
+    Cargo,
+    /// Check binary targeting Fuchsia device or emulator
+    Check,
+    /// Run a configure script for the cross compilation environment
+    Configure,
+    /// Build a package's documentation
+    Doc,
+    /// Enable networking for a running emulator
+    EnableNetworking,
+    /// Run cargo fmt using the Fuchsia toolchain
+    Fmt,
+    /// List visible Fuchsia devices
+    ListDevices,
+    /// Make a Fuchsia package from an unstripped binary
+    MakePackage,
+    /// Run pkg-config for the cross compilation environment
+    PkgConfig,
+    /// Stop all Fuchsia emulators and start a new one
+    Restart,
+    /// Act as as custom runner for Cargo targeting a Fuchsia device
+    RunOnTarget(RunOnTarget),
+    /// Run binary on Fuchsia device or emulator
+    Run(Run),
+    /// Open a shell on Fuchsia device or emulator
+    Ssh,
+    /// Start a Fuchsia emulator
+    Start,
+    /// Stop all Fuchsia emulators
+    Stop,
+    /// Run unit tests on Fuchsia device or emulator
+    Test,
+    /// Write a .cargo/config file to allow cargo to operate correctly for Fuchsia
+    WriteConfig,
+}
+
+#[derive(Debug, StructOpt)]
+struct Run {
+    /// Build artifacts in release mode, with optimizations.
+    #[structopt(long)]
+    release: bool,
+
+    /// Use run to run the binary.
+    #[structopt(long)]
+    run_with_run: bool,
+
+    /// Use tiles_ctl add to run the binary.
+    #[structopt(long)]
+    run_with_tiles: bool,
+
+    /// Use Use sessionctl to run the binary.
+    #[structopt(long)]
+    run_with_sessionctl: bool,
+
+    /// Name of app as it appears in the manifest file.
+    #[structopt(long, default_value = "app")]
+    app_name: String,
+
+    /// Name of story to pass to sessionctl.
+    #[structopt(short = "n", long)]
+    story_name: Option<String>,
+
+    /// Name of mod to pass to sessionctl.
+    #[structopt(short, long)]
+    mod_name: Option<String>,
+
+    /// Path to sandbox file to use when running.
+    #[structopt(long)]
+    cmx_path: Option<PathBuf>,
+
+    /// Package to build.
+    #[structopt(short, long)]
+    package: Option<String>,
+
+    /// Name of the bin target to run.
+    #[structopt(long)]
+    bin: Option<String>,
+
+    /// Run a specific example from the examples/ dir.
+    #[structopt(long)]
+    example: Option<String>,
+}
+
+#[derive(Debug, StructOpt)]
+struct RunOnTarget {
+    /// Path to the binary to run.
+    binary_to_run: String,
+
+    /// Use run to run the binary.
+    #[structopt(long)]
+    run_with_run: bool,
+
+    /// Use tiles_ctl add to run the binary.
+    #[structopt(long)]
+    run_with_tiles: bool,
+
+    /// Use Use sessionctl to run the binary.
+    #[structopt(long)]
+    run_with_sessionctl: bool,
+
+    /// Name of app as it appears in the manifest file.
+    #[structopt(long, default_value = "app")]
+    app_name: String,
+
+    /// Name of story to pass to sessionctl.
+    #[structopt(short = "n", long)]
+    story_name: Option<String>,
+
+    /// Name of mod to pass to sessionctl.
+    #[structopt(short, long)]
+    mod_name: Option<String>,
+
+    /// Path to sandbox file to use when running.
+    #[structopt(long)]
+    cmx_path: Option<PathBuf>,
+
+    /// Additional arguments for the binary.
+    runner_args: Vec<String>,
+
+    #[structopt(long)]
+    no_capture: bool,
+}
+
+#[derive(Debug, StructOpt)]
+#[structopt(name = "fargo", about = "Fargo is a prototype Fuchsia-specific wrapper around Cargo.")]
+struct FargoOption {
+    /// Print verbose output while performing commands
+    #[structopt(short, long)]
+    verbose: bool,
+
+    /// Disable the setting of CC, AR and such environmental variables
+    #[structopt(long)]
+    disable_cross_env: bool,
+
+    /// Name of device to target, needed if there are multiple devices visible on the network
+    #[structopt(short = "N", long)]
+    device_name: Option<String>,
+
+    /// Path to Cargo.toml
+    #[structopt(long, global = true)]
+    manifest_path: Option<PathBuf>,
+
+    #[structopt(subcommand)]
+    command: FargoCommand,
+}
+
+fn to_opt_str(value: &Option<String>) -> Option<&str> {
+    value.as_ref().map(String::as_str)
+}
+
+#[doc(hidden)]
+pub fn run2() -> Result<(), Error> {
+    let opt = FargoOption::from_args();
+    println!("{:?}", opt);
+
+    let verbose = opt.verbose;
+    let fuchsia_config = FuchsiaConfig::new_from_fx_exec()?;
+    if verbose {
+        println!("fuchsia_config = {:#?}", fuchsia_config);
+    }
+
+    let target_options =
+        TargetOptions::new(&fuchsia_config, opt.device_name.as_ref().map(String::as_str));
+    let run_cargo_options = RunCargoOptions { verbose, ..RunCargoOptions::default() };
+
+    match opt.command {
+        FargoCommand::Run(run) => {
+            println!("Want to run {:#?}", run);
+            let mut params = vec![];
+
+            if let Some(package) = run.package.as_ref() {
+                params.push("--package");
+                params.push(package);
+            }
+            if let Some(bin) = run.bin.as_ref() {
+                params.push("--bin");
+                params.push(bin);
+            }
+
+            if let Some(example) = run.example.as_ref() {
+                params.push("--example");
+                params.push(example);
+            }
+
+            let run_mode =
+                run_switches_to_mode(run.run_with_tiles, run.run_with_run, run.run_with_sessionctl);
+            return run_binary(
+                &run_cargo_options
+                    .release(run.release)
+                    .run_mode(run_mode)
+                    .story_name(&to_opt_str(&run.story_name))
+                    .mod_name(&to_opt_str(&run.mod_name))
+                    .app_name(&Some(&run.app_name))
+                    .manifest_path(opt.manifest_path)
+                    .cmx_path(run.cmx_path),
+                &target_options,
+                &params,
+            );
+        }
+        FargoCommand::RunOnTarget(run_on_target) => {
+            let run_cargo_options = run_cargo_options.cmx_path(run_on_target.cmx_path);
+            let run_params = run_on_target.runner_args;
+            let run_mode = run_switches_to_mode(
+                run_on_target.run_with_tiles,
+                run_on_target.run_with_run,
+                run_on_target.run_with_sessionctl,
+            );
+
+            return run_program_on_target(
+                &run_on_target.binary_to_run,
+                verbose,
+                run_on_target.no_capture,
+                &fuchsia_config,
+                &target_options,
+                run_mode,
+                &run_cargo_options.cmx_path,
+                &run_on_target.story_name.unwrap_or(random_story_name()),
+                &run_on_target.mod_name.unwrap_or(DEFAULT_MOD_NAME.to_string()),
+                &run_on_target.app_name,
+                &[],
+                None,
+            );
+        }
+        _ => println!("command {:#?} not yet implemented", opt.command),
+    }
+    Ok(())
+}
