 	return result(Optional.Some(true))
 }
 
-public func failed() -> TestResult {
-	return result(Optional.Some(false))
+public func failed(reason : String = "") -> TestResult {
+	return result(Optional.Some(false), reason: reason)
 }
 
 public func rejected() -> TestResult {

//  Copyright (c) 2014 Robert Widmann. All rights reserved.
//


public func protectResults(rs: Rose<TestResult>) -> Rose<TestResult> {
	return onRose({ x in
		return { rs in
			return .MkRose({ x }, { rs.map(protectResults) })

	return p.property()
}

private func id<A>(x : A) -> A {
	return x
}

private func • <A, B, C>(f : B -> C, g : A -> B) -> A -> C {
	return { f(g($0)) }
}

internal func insertWith<K : Hashable, V>(f : (V, V) -> V, k : K, v : V, var m : Dictionary<K, V>) -> Dictionary<K, V> {
	let oldV = m[k]
	if let existV = oldV {
