Seems like having `run` be the public API would be better name-wise.