 		}
 	}
 
+	/// Resolves all Optional values in the stream, ignoring any that are `nil`.
+	///
+	/// evidence     - Used to prove to the typechecker that the receiver is
+	///                a stream of optionals. Simply pass in the `identity`
+	///                function.
+	/// initialValue - A default value for the returned stream, in case the
+	///                receiver's current value is `nil`, which would otherwise
+	///                result in a null value for the returned stream.
 	@final func ignoreNil<U>(evidence: Observable<T> -> Observable<U?>, initialValue: U) -> Observable<U> {
 		return Observable<U>(initialValue: initialValue) { send in
 			return evidence(self).observe { maybeValue in

		}
	}

	@final func switchToLatest<U>(evidence: Observable<T> -> Observable<Observable<U>>) -> Observable<U> {
		return Observable<U> { send in
			let compositeDisposable = CompositeDisposable()

		}
	}

	/// Maps each value in the stream to a new value.
	@final func map<U>(f: T -> U) -> Observable<U> {
		return Observable<U> { send in
			return self.observe { value in send(f(value)) }
		}
	}

	/// Combines all the values in the stream, forwarding the result of each
	/// intermediate combination step.
	@final func scan<U>(initialValue: U, _ f: (U, T) -> U) -> Observable<U> {
		let previous = Atomic(initialValue)

