Revamped with lots more error handling and reprocessing capabilities