 public func ==<T : Equatable>(lhs : ResultPromise<T>, rhs : ResultPromise<T>) -> ResultPromise<Bool> {
 	return (lhs ++ rhs) => { $0 == $1 }
 }
+
+extension ResultPromise : Printable {
+	public var description : String {
+		if let value = value {
+			return "OptionalPromise(\(value))"
+		} else {
+			return "OptionalPromise(\(value.dynamicType))"
+		}
+	}
+}

public func ==<T : Equatable>(lhs : OptionalPromise<T>, rhs : OptionalPromise<T>) -> OptionalPromise<Bool> {
	return (lhs ++ rhs) => { $0 == $1 }
}

public class ResultPromise<T> {
	public init() {

	return (lhs ++ rhs) => { $0 == $1 }
}

extension Promise : Printable {
	public var description : String {
		if let value = _value {
			return "Promise(\(value))"
		} else {
			return "Promise(\(_value.dynamicType))"
		}
	}
}


public class OptionalPromise<T> {
	public init() {
