Fixes #3

Add multithreading to UPC provider

Clean up code
Fixes #3

Add multithreading to UPC provider

Clean up code