 }
 
 extension Observable {
-	public func map <T> (_ transform: @escaping (Observed) -> T) -> Observable<T> {
+	///	Create a new `Observable` object that always keeps the same value as
+	///	this one, transformed through the given function. The updates are given
+	///	referring to the transformed value, and changes are determined in terms
+	///	of the result of the transformation.
+	///
+	///	- parameter transform: The transform between the value on this object
+	///		and the resulting one.
+	///	- parameter value: The `value` of this that gets transformed.
+	///	- returns: Another `Observable`, which notifies its subscribers of
+	///		updates on its transformed value.
+	public func map <T> (_ transform: @escaping (_ value: Observed) -> T) -> Observable<T> {
 		let mappedObservable = Observable<T>(transform(value))
 		subscribe(mappedObservable, onUpdate: { [weak mappedObservable] oldValue, newValue in
 			mappedObservable?.value = transform(newValue)

public final class Observable<Observed> {
	// MARK: - Private implementation
	

		return mappedObservable
	}

	/// Create a new `Observable` object that alwyas keeps the value of the one
	/// resulting from applying the given `transform` on this one. The updates
	///	are given referring to the transformed value, and changes are determined
	///	in terms of the result of the transformation.
	///
	/// - parameter transform: The transform between the value on this object
	///		and a new `Observable`.
	///	- parameter value: The `value` of this that gets transformed.
	///	- returns: Another `Observable`, which is created from applying
	///		`transform` on the current `value`, but which keeps track of future
	///		changes of it.
	public func flatMap <T> (_ transform: @escaping (_ value: Observed) -> Observable<T>) -> Observable<T> {
		let mappedObservable = transform(value)
		subscribe(mappedObservable, onUpdate: { [weak mappedObservable] oldValue, newValue in
			mappedObservable?.value = transform(newValue).value
