 /// :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)
+    let queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 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.currentThread().isMainThread {
        block()
    } else {
        runOnMainThread(block)

///
/// :param: block Function to either synchronously schedule or run immediately
public func runOnMainThreadIfNeededSync(block: dispatch_block_t) {
    if (NSThread.isMainThread()) {
        block()
    } else {
        dispatch_sync(dispatch_get_main_queue(), block)
