Maybe I'm not understanding the concept but shouldn't this second piece of code wait before the first one is done?

```
dispatch_sync(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), { () -> () in
    // do some task
    var myRef = self.userRef.childByAppendingPath(self.userRef.authData.uid)
    myRef.observeSingleEventOfType(.Value, withBlock: { snapshot in
        println("WE ARE IN HERE")
        firstName = snapshot.value["firstName"] as String!
        lastName = snapshot.value["lastName"] as String!
    })
});

dispatch_sync(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), { () -> () in
    // do some task
    var standbyData = [
        "firstName":firstName,
        "lastName":lastName,
        "duration":self.helpDurationLabel.text!,
        "radius":self.helpRadiusLabel.text!,
        "categories": categories,
        "time_stamp":self.date.timeIntervalSince1970
    ]
    println("WE ARE OUT HERE")
    var standbyUserRef = self.standbyRef.childByAppendingPath(self.userRef.authData.uid)
    standbyUserRef.updateChildValues(standbyData)
});

```

Is there something I'm missing?

Output is:

```
"WE ARE OUT HERE"
"WE ARE IN HERE"

```