add upload-to-pypi TODO
don't wrap put callback before passing to dispatch.run, since it takes no parameter