diff --git a/packages/binary/marshalutil/marshalutil.go b/packages/binary/marshalutil/marshalutil.go
index 8d167082a4bccbaa0ea90a73aa1d96ae5391052c..733ee12f038b32b54413e2071b676375d1dbd064 100644
--- a/packages/binary/marshalutil/marshalutil.go
+++ b/packages/binary/marshalutil/marshalutil.go
@@ -40,7 +40,7 @@ func New(args ...interface{}) *MarshalUtil {
 
 func (util *MarshalUtil) Parse(parser func(data []byte) (interface{}, error, int)) (result interface{}, err error) {
 	result, err, readBytes := parser(util.bytes[util.readOffset:])
-	if err != nil {
+	if err == nil {
 		util.ReadSeek(util.readOffset + readBytes)
 	}
 
diff --git a/packages/binary/valuetransfers/payload/payload.go b/packages/binary/valuetransfers/payload/payload.go
index deee188abc0cbdb2cdd124cdaed79294780eea66..7ffe6aa80aba954d494e9421fd2a6efd91ee0c4b 100644
--- a/packages/binary/valuetransfers/payload/payload.go
+++ b/packages/binary/valuetransfers/payload/payload.go
@@ -65,7 +65,7 @@ func FromBytes(bytes []byte, optionalTargetObject ...*Payload) (result *Payload,
 	result.branchPayloadId = payloadid.New(parsedBranchPayloadId)
 
 	// parse transfer
-	parsedTransfer, err := marshalUtil.Parse(func(data []byte) (result interface{}, err error, consumedBytes int) { return transfer.FromBytes(data) })
+	parsedTransfer, err := marshalUtil.Parse(func(data []byte) (interface{}, error, int) { return transfer.FromBytes(data) })
 	if err != nil {
 		return
 	}
diff --git a/packages/binary/valuetransfers/payload/transfer/transfer.go b/packages/binary/valuetransfers/payload/transfer/transfer.go
index 113465c50e31a48510823e4cf479cbce6dd2a6a5..af9357069a881b95434914e8acd395f4ce81b8e8 100644
--- a/packages/binary/valuetransfers/payload/transfer/transfer.go
+++ b/packages/binary/valuetransfers/payload/transfer/transfer.go
@@ -51,14 +51,14 @@ func FromBytes(bytes []byte, optionalTargetObject ...*Transfer) (result *Transfe
 	marshalUtil := marshalutil.New(bytes)
 
 	// unmarshal inputs
-	parsedInputs, err := marshalUtil.Parse(func(data []byte) (result interface{}, err error, consumedBytes int) { return inputs.FromBytes(data) })
+	parsedInputs, err := marshalUtil.Parse(func(data []byte) (interface{}, error, int) { return inputs.FromBytes(data) })
 	if err != nil {
 		return
 	}
 	result.inputs = parsedInputs.(*inputs.Inputs)
 
 	// unmarshal outputs
-	parsedOutputs, err := marshalUtil.Parse(func(data []byte) (result interface{}, err error, consumedBytes int) { return outputs.FromBytes(data) })
+	parsedOutputs, err := marshalUtil.Parse(func(data []byte) (interface{}, error, int) { return outputs.FromBytes(data) })
 	if err != nil {
 		return
 	}
diff --git a/packages/binary/valuetransfers/test/payload_test.go b/packages/binary/valuetransfers/test/payload_test.go
index 4697d53aff584594e637b58234cc41159225b0e4..e7b023f666b63e6b37b440d6313fd4ae2d715b7d 100644
--- a/packages/binary/valuetransfers/test/payload_test.go
+++ b/packages/binary/valuetransfers/test/payload_test.go
@@ -22,8 +22,8 @@ func TestPayload(t *testing.T) {
 		payloadid.Empty,
 		transfer.New(
 			inputs.New(
-				transferoutputid.New(address.New([]byte("test")), transferid.New([]byte("test"))),
-				transferoutputid.New(address.New([]byte("test")), transferid.New([]byte("test1"))),
+				transferoutputid.New(address.New([]byte("input_address1")), transferid.New([]byte("transfer1"))),
+				transferoutputid.New(address.New([]byte("input_address2")), transferid.New([]byte("transfer2"))),
 			),
 
 			outputs.New(map[address.Address][]*coloredbalance.ColoredBalance{
diff --git a/packages/binary/valuetransfers/transfer.go b/packages/binary/valuetransfers/transfer.go
index 91eb05834ec12f93254cd16a3004d3bc838d16bc..6cd4df8cd471c33a6101b6f27b5e991ce4e56bcf 100644
--- a/packages/binary/valuetransfers/transfer.go
+++ b/packages/binary/valuetransfers/transfer.go
@@ -48,9 +48,7 @@ func TransferFromBytes(bytes []byte, optionalTargetObject ...*Transfer) (result
 	marshalUtil := marshalutil.New(bytes)
 
 	// unmarshal inputs
-	if parseResult, inputsErr := marshalUtil.Parse(func(data []byte) (result interface{}, err error, consumedBytes int) {
-		return TransferInputsFromBytes(data)
-	}); inputsErr != nil {
+	if parseResult, inputsErr := marshalUtil.Parse(func(data []byte) (interface{}, error, int) { return TransferInputsFromBytes(data) }); inputsErr != nil {
 		err = inputsErr
 
 		return
@@ -59,9 +57,7 @@ func TransferFromBytes(bytes []byte, optionalTargetObject ...*Transfer) (result
 	}
 
 	// unmarshal outputs
-	if parseResult, outputsErr := marshalUtil.Parse(func(data []byte) (result interface{}, err error, consumedBytes int) {
-		return OutputsFromBytes(data)
-	}); outputsErr != nil {
+	if parseResult, outputsErr := marshalUtil.Parse(func(data []byte) (interface{}, error, int) { return OutputsFromBytes(data) }); outputsErr != nil {
 		err = outputsErr
 
 		return