 ///
 /// Instances of this class are thread-safe.
 public final class ObservableProperty<T> {
-	private let queue = dispatch_queue_create("org.reactivecocoa.ReactiveCocoa.ObservableProperty", DISPATCH_QUEUE_SERIAL)
+	private let queue = dispatch_queue_create("org.reactivecocoa.ReactiveCocoa.ObservableProperty", DISPATCH_QUEUE_CONCURRENT)
 	private var sinks = Bag<SinkOf<Event<T>>>()
 	private var _value: T
 

			if let strongSelf = self {
				var token: RemovalToken?

				dispatch_sync(strongSelf.queue) {
					token = strongSelf.sinks.insert(sink)
					sink.put(.Next(Box(strongSelf._value)))
				}

				disposable.addDisposable {
					if let strongSelf = self {
						dispatch_async(strongSelf.queue) {
							strongSelf.sinks.removeValueForToken(token!)
						}
					}

	}

	deinit {
		dispatch_barrier_sync(queue) {
			for sink in self.sinks {
				sink.put(.Completed)
			}
