removed progress reporter thread due to race condition in the .join() with this queue and substituted it with thread-safe event firing and join()s on the worker threads
general code cleanup and more general exception handling for the worker threads