It would be great to have a precise description of input arguments and output. For example, the concrete Machine types implement a `run_bundle` method which takes in `bundle, bundle_store, parent_dict`. 

Likewise, I was trying to figure out what `poll` returns and it requires looking at the implementation.