This interface would be cleaner (and match the run interface better) of it took a desired_result.

You could infer the id from desired_result.id -- which will be unique.