It doesn't look like *launch* and *close* do much; they seem like very basic wrappers around SimulatorProcess functions. Perhaps it would be simpler to just expose the SimulatorProcess constructor here and let consumers instantiate it and call its *run* and *kill* functions directly.