 import LlamaKit
 
 /// A mutable property of type T that allows observation of its changes.
+///
+/// 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 var sinks = Bag<SinkOf<Event<T>>>()
+	private var _value: T
 
 	/// The file in which this property was defined, if known.
 	public let file: String?

	/// Setting this to a new value will notify all sinks attached to
	/// `values`.
	public var value: T {
		didSet {
			dispatch_sync(queue) {
				for sink in self.sinks {
					sink.put(.Next(Box(self.value)))
				}
			}
		}


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

				disposable.addDisposable {
