         return success(result)
     }
 
-    return ValueTransformer(transformClosure: transformValue, reverseTransformClosure: reverseTransformValue)
+    return ValueTransformer(transformClosure: transformClosure, reverseTransformClosure: reverseTransformClosure)
 }

// MARK: - Compose

public func compose<A, B, C, E>(left: ValueTransformer<A, B, E>, right: ValueTransformer<B, C, E>) -> ValueTransformer<A, C, E> {
    let transformValue: A -> Result<C, E> = { a in
        return left.transformedValue(a).flatMap { b in right.transformedValue(b) }
    }

    let reverseTransformValue: C -> Result<A, E> = { c in
        return right.reverseTransformedValue(c).flatMap { b in left.reverseTransformedValue(b) }
    }

    return ValueTransformer(transformClosure: transformValue, reverseTransformClosure: reverseTransformValue)
}

infix operator >>> {

        return success(result)
    }

    let reverseTransformClosure: [B] -> Result<[A], E> = { values in
        var result = [A]()
        for element in values {
            switch valueTransformer.reverseTransformedValue(element) {
