Cleaning up code a little. Added a couple error checks in progress() method and appropriate tests.