Replace most NSThread calls with GCD