Add promise.progress.  Refactoring overall.
version 1.1