Revert most of the last merge.

There wasn't a big performance benefit by using threads. However, the separation of the delegate and other changes were great and those are being kept.