     }
     
     @warn_unused_result
-    func catchReturn(value: Value) -> SecureDistillate<Value> {
-        return catchReturn { _ in value }
+    func catchReturn(@autoclosure(escaping) value: () -> Value) -> SecureDistillate<Value> {
+        return catchReturn { _ in value() }
     }
 }
 
 public extension DistillateType where Value: OptionalType {
     @warn_unused_result
     func replaceNil(@noescape with: () -> Value.Wrapped) throws -> Value.Wrapped {
-        return try map { $0.optionalValue ?? with() }
+        return try value().optionalValue ?? with()
     }
     
     @warn_unused_result

    }
    
    @warn_unused_result
    func replaceNil(with: Value.Wrapped) -> Distillate<Value.Wrapped> {
        return replaceNil { with }
    }
    
    @warn_unused_result

    }
    
    @warn_unused_result
    func replaceEmpty(@autoclosure(escaping) with: () -> Value) -> Distillate<Value> {
        return replaceEmpty { with() }
    }
    
    @warn_unused_result
