 ///
 /// :param: block Function to run on a background thread in the (near) future
 public func runAsync(block: dispatch_block_t) {
-    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), block)
+    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), block)
 }
 
 /// Asynchronously schedule a function for execution on a background thread

/// :param: block Function to run on a background thread in the future
public func runAsyncAfterDelay(delay: NSTimeInterval, block: dispatch_block_t) {
    let time = dispatch_time(DISPATCH_TIME_NOW, Int64(delay * Double(NSEC_PER_SEC)))
    let queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)
    dispatch_after(time, queue, block)
}

///
/// :param: block Function to either asynchronously schedule or run immediately
public func runOnMainThreadIfNeeded(block: dispatch_block_t) {
    if NSThread.isMainThread() {
        block()
    } else {
        runOnMainThread(block)
