Added progress support.
More consistent internals. 4xx errro handling.