     
     public func delay(interval: Double, job: () -> ()) {
         dispatch_after(dispatch_time(DISPATCH_TIME_NOW, Int64(interval * Double(NSEC_PER_SEC))), self.queue, job)
+    }
+}
+
+// MARK: - A Simple Class for GCD Dispatch Group
+
+public class SRDispatchGroup {
+    private let group = dispatch_group_create()
+    
+    public func async(queue: SRDispatchQueue, job: () -> ()) {
+        dispatch_group_async(self.group, queue.queue, job)
+    }
+    
+    public func notify(queue: SRDispatchQueue, job: () -> ()) {
+        dispatch_group_notify(self.group, queue.queue, job)
     }
 }
 

        } else {
            self.queue = dispatch_queue_create(label, DISPATCH_QUEUE_CONCURRENT)
        }
        super.init()
    }
    
    public func sync(job: () -> ()) {

    
    private init(queue: dispatch_queue_t) {
        self.queue = queue
    }
    
    private init(label: String, serial: Bool) {
