Correctly handle hex numbers that look like 0, like 00000000000000e4.
Return binary data back as an array.
Better handling of unknown progress.

If the progress can not be determined, just send -1 once.